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.651
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.651
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.651
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.651
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.651
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.651
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.651
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

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

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


 

Aktuelle PHP Scripte

ContentLion - Open Source CMS ansehen ContentLion - Open Source CMS

ContentLion ist ein in PHP geschriebenes CMS, bei dem man Seiten, Einstellungen usw. in Ordnern lagern kann

22.08.2019 stevieswebsite2 | Kategorie: PHP/ CMS
Adsman Pro - Werbe-Manager V.1.1.0

Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebigem Format, Textanzeigen und Page-Peels mit umfangreichen Text und Flash-Effekte.

30.07.2019 rhs | Kategorie: PHP/ Bannerverwaltung
HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

30.07.2019 Berni | Kategorie: MYSQL/ Management
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:56 Uhr.