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
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 05-05-2016, 15:31
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.740
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.740
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.740
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.740
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.740
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.740
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.740
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

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

04.09.2020 palle_1977 | Kategorie: PHP
numaeks Web-Farbmixer

Die RGB-Farben lassen sich hier auf unterschiedliche Weise mischen. Zur Einstellung werden auch die Dreh- und Schieberegler mit Canvas verwendet. Gespeichert werden die Farben in einem Cookie.

04.09.2020 numaek | Kategorie: JAVASCRIPT/ Tools
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

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