php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 05-05-2016, 15:26
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard SQL Update geht nicht

Ich habe folgendes Skript:
PHP-Code:
if (filter_input(INPUT_POST"email"FILTER_VALIDATE_EMAIL)) { $email htmlspecialchars($_POST["email"]); }
if (
filter_input(INPUT_POST"kdnr"FILTER_VALIDATE_INT)) { $kdnr htmlspecialchars($_POST["kdnr"]); }
$passwort password_hash($_POST["passwort"]);


if (
mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

/* prepare statement */
if ($stmt $mysqli->prepare("SELECT kdnr, email, passwort, firstlogin, firstversuche, anrede, nachname, vorname FROM kunden WHERE kdnr = '$kdnr' AND email = '$email' LIMIT 1")) {
    
$stmt->execute();
    
$stmt->bind_result($db_kdnr$db_email$db_passwort$db_firstlogin$db_firstversuche$db_anrede$db_nachname$db_vorname);
$stmt->fetch();

    
if(
$db_firstlogin == 0) { // Wenn zum ersten mal Login

if($db_firstversuche >= 5) { // Wenn mehr oder gleich 5 Versuche
echo "Sie haben mehr als 5x Versucht eine Bestätigungsemail zu senden. Deswegen wurde ihr Account gesperrt. <br />Bitte kontaktieren Sie uns unter: ----- um ihren Account wieder zu Entsperren."
exit; 
}
    
    
if(!empty(
$db_email)) { // Wenn Email vorhanden

    
echo "<br /><hr><br />Sie melden sich heute zum 1. mal in unserem System an !<br />Daher müssen wir ihre Identität noch verifizieren."
    
$betreff utf8_decode("Ihr Bestätigungscode");
    
$from "From: NAME <xxxxxx>\n";
    
$from .= "Reply-To: antwort@domain.de\n";
    
$from .= "Content-Type: text/html\n";

    
$random1 rand(99999,999999999);
    
$random password_hash($random1PASSWORD_DEFAULT);
    
$text utf8_decode("Hallo ".$db_anrede." ".$db_nachname." ".$db_vorname.".<br /><br />Ihr Bestätigungscode lautet: ".$random1."<br /><br />Falls Sie die Seite schon geschlossen haben, folgen Sie bitte diesem Link:<br /><center><br />Link zum Bestätigen: <br /><a style='background: #454545; color:#fff; text-decoration:none;' href='http://www.webseitee/verify.php&email=".$db_email."&code=".$random."'> Hier klicken </a></center>  <br /><br /><hr><p style='font-size='1px'><hr><br /> \n\nDanke");
 
    
mail($db_email$betreff$text$from);

    
// Eintrag in DB der nicht geht !!!!

if ($stmt $mysqli->prepare("UPDATE kunden SET firstlogin = '1' WHERE email = 'eine Email Adresse @ adddi. de'")) {
    
$stmt->execute();
}


}

Woran kann das liegen ??? Hab schon mit ` und ' ohne Anführungszeichen und mit mit ? und bind_param
Er macht einfach in firstlogin keine 1 rein
Mit Zitat antworten
  #2 (permalink)  
Alt 05-05-2016, 15:31
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.589
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Woran kann was liegen? "geht nicht" ist keine Fehlerbeschreibung.

htmlspecialchars() hat in SQL-Code nichts verloren. Das gehört nur in die HTML-Ausgabe.

Wenn du schon prepare() verwendest, warum setzt da dann nicht auch die Parameter damit? Und bevor du fragst wie: Steht alles im PHP-Handbuch.

mail() sollte nicht verwendet werden. Nimm stattdessen eine Mailer-Klasse.
Mit Zitat antworten
  #3 (permalink)  
Alt 05-05-2016, 15:35
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard re

if ($stmt = $mysqli->prepare("UPDATE kunden SET firstlogin = ? WHERE email = ?")) {
$stmt->bind_param("is", "1", "test@test");
$stmt->execute();
}

Geht auch nicht. Wenn das SQL Update mal geht kümmer ich mich um die Mailer Klasse
Mit Zitat antworten
  #4 (permalink)  
Alt 05-05-2016, 15:40
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.589
h3ll befindet sich auf einem aufstrebenden Ast
Standard

"geht nicht" ist keine Fehlerbeschreibung.

Du ignorierste sämtlich SQL-Fehler. Lass sie dir doch mal ausgeben. Betreiber Debugging. Lass dir Variableninhalt und Rückgabewerte ausgeben oder verwende gleich einen Debugger.
Mit Zitat antworten
  #5 (permalink)  
Alt 05-05-2016, 15:43
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard Soory

Sry hab die Function vergessen anzustellen ^^

Fatal error: Call to a member function close() on boolean in /var/www/k103238web/htdocs/www.zwpc.de/web/seiten/kundencenter.php on line 66
Mit Zitat antworten
  #6 (permalink)  
Alt 05-05-2016, 15:44
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.589
h3ll befindet sich auf einem aufstrebenden Ast
Standard

In deinem geposteten Code kommt kein close() vor.
Mit Zitat antworten
  #7 (permalink)  
Alt 05-05-2016, 15:48
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard re

Die Kurzform wäre doch
PHP-Code:
$mysqli->query("UPDATE kunden SET firstlogin = '1' WHERE email = 'die Email'"); 

und in Zeile 65 steht
PHP-Code:
  $mysqli->close();  
  
$stmt->close(); 
Mit Zitat antworten
  #8 (permalink)  
Alt 05-05-2016, 16:00
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.589
h3ll befindet sich auf einem aufstrebenden Ast
Standard

$stmt enthält kein Objekt, sondern einen boolschen Wert. Jetzt musst du herausfinden warum.
Mit Zitat antworten
  #9 (permalink)  
Alt 05-05-2016, 16:03
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard re

PHP-Code:
$stmt->bind_result($db_kdnr$db_email$db_passwort$db_firstlogin$db_firstversuche$db_anrede$db_nachname$db_vorname);
    
$stmt->fetch(); 
Dadurch erhalte ich mit $db_email die korrekte Email Adresse.
diese kann ich auch vor der SQL Abfrage ausgeben somit stimmt diese definitiv.
Mit Zitat antworten
  #10 (permalink)  
Alt 05-05-2016, 16:05
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.589
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Du zeigst immer nur Code-Fetzen ohne Zusammenhang. Das ist überhaupt nicht hilfreich. Schreibe bitte ein kurzes und knackiges Code-Beispiel, bei dem das Fehlverhalten nachvollziehbar auftritt.
Mit Zitat antworten
  #11 (permalink)  
Alt 05-05-2016, 16:11
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard re

Der komplette Code:

PHP-Code:
fehleranzeige();

if(!isset(
$_POST["login_5_1"])) { echo "fehler !"; exit; } 

if (
filter_input(INPUT_POST"email"FILTER_VALIDATE_EMAIL)) { $email $_POST["email"]; }
if (
filter_input(INPUT_POST"kdnr"FILTER_VALIDATE_INT)) { $kdnr $_POST["kdnr"]; }
$passwort password_hash($_POST["passwort"], PASSWORD_DEFAULT);

if (
$stmt $mysqli->prepare("SELECT kdnr, email, passwort, firstlogin, firstversuche, anrede, nachname, vorname FROM kunden WHERE kdnr = '$kdnr' AND email = '$email' LIMIT 1")) {
    
$stmt->execute();
    
$stmt->bind_result($db_kdnr$db_email$db_passwort$db_firstlogin$db_firstversuche$db_anrede$db_nachname$db_vorname);
    
$stmt->fetch();

    if(
$db_firstlogin == 0) { 

            if(
$db_firstversuche >= 5) { 
              echo 
"Sie haben mehr als 5x Versucht eine Bestätigungsemail zu senden. Deswegen wurde ihr Account gesperrt. <br />Bitte kontaktieren Sie uns unter:  um ihren Account wieder zu Entsperren."
              exit; 
            }
    
    if(!empty(
$db_email)) {
    echo 
"<br /><hr><br />Sie melden sich heute zum 1. mal in unserem System an !<br />Daher müssen wir ihre Identität noch verifizieren."
    
$betreff utf8_decode("Ihr Bestätigungscode");
    
$from "From: xxxx <xxxx>\n";
    
$from .= "Reply-To: antwort@domain.de\n";
    
$from .= "Content-Type: text/html\n";

    
$random1 rand(99999,999999999);
    
$random password_hash($random1PASSWORD_DEFAULT);
    
$text utf8_decode("Hallo ".$db_anrede." ".$db_nachname." ".$db_vorname.".<br /><br />Ihr Bestätigungscode lautet: ".$random1."<br /><br />Falls Sie die Seite schon geschlossen haben, folgen Sie bitte diesem Link:<br />        <center><br />Link zum Bestätigen: <br /><a style='background: #454545; color:#fff; text-decoration:none;' href='http://xxxxxx/verify.php&email=".$db_email."&code=".$random."'> Hier klicken </a></center>  <br /><br /><hr><hr><br /> \n\nDanke");
    
mail($db_email$betreff$text$from);

    
$mysqli->query("UPDATE kunden SET firstlogin = '1' WHERE email = '$db_email'"); // <<-- Geht nicht 
     
}}
    
     if(
password_verify($_POST['passwort'], $db_passwort) == False) { echo "<br /><br /><h3>Das Passwort stimmt leider nicht mit unseren Daten überein !</h3>"; exit; }
          echo 
"<br />";
          echo 
first_verify();
}

$mysqli->close();  
$stmt->close(); 

Geändert von thommy1972de (05-05-2016 um 16:21 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 05-05-2016, 16:16
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.589
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Bitte Code lesbar und einheitlich einrücken.
Mit Zitat antworten
  #13 (permalink)  
Alt 05-05-2016, 17:18
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard re

Selbst wenn ich nur
PHP-Code:
    $update "UPDATE kunden SET firstlogin = '1' WHERE kdnr = '1'";
    
$mysqli->query($update); 
eingebe erhalte ich weder Fehler noch ein Update ??

PHP-Code:
error_reporting(E_ALL);
ini_set('display_errors'1); 
Stimmt doch ??
Mit Zitat antworten
  #14 (permalink)  
Alt 05-05-2016, 17:43
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.589
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Weil du gar nicht überprüfst, ob die Abfrage erfolgreich war. query() liefert einen Rückgabewert, diesen solltest du nicht ignorieren.
Mit Zitat antworten
  #15 (permalink)  
Alt 05-05-2016, 18:11
thommy1972de
 Registrierter Benutzer
Links : Onlinestatus : thommy1972de ist offline
Registriert seit: May 2016
Beiträge: 35
thommy1972de befindet sich auf einem aufstrebenden Ast
Standard re

Ich habe jetzt mal alles Umgebaut. Bitte keine Kommentare wegen * ^^

PHP-Code:
$query2 "SELECT * FROM kunden WHERE kdnr = '1'";
if(
$ergebnis mysqli_query($mysqli$query2)) {
while(
$row=mysqli_fetch_assoc($ergebnis)) {
    
$db_firstlogin $row['firstlogin'];
    
$db_firstversuche $row['firstversuche'];
    
$db_email $row['email'];
    
$db_passwort $row['passwort'];
    
$db_anrede $row['anrede'];
    
$db_nachname $row['nachname'];
    
$db_vorname $row['vorname'];
}} 
Sorum funktioniert es.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MYSQL Update geht nicht ignition PHP Developer Forum 7 15-10-2007 22:00
Datenbank-Update geht nicht White-Horse PHP Developer Forum 10 26-08-2003 13:01
Warum geht das nicht ? - fast identischer SQL Befehl geht .. syco23 SQL / Datenbanken 10 10-07-2003 19:54
UPDATE geht nicht ... 1mp3r4t0r SQL / Datenbanken 1 12-04-2003 12:47
UPDATE geht nicht lung PHP Developer Forum 10 07-06-2002 12:27

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:05 Uhr.