2017-07-05 2 views
1

Ich versuche, Wert in meine Datenbank unter Verwendung von Code einzufügen. Aber es gibt Wert nicht ein. Ich will & debuggen, irgendwelche Fehlermeldung zu drucken ich versuchte $stmt->error oder $stmt->errorInfo(), aber nichts funktionierte für mich.Wie debuggen Sie eine Anweisung mit PHP?

$stmt = $this->conn->prepare("INSERT INTO users(name) values(?)"); 
$stmt->bind_param("s", "dhieaj"); 

$result = $stmt->execute(); 
echo $stmt->errorInfo(); 
$stmt->close(); 
// Check for successful insertion 
if ($result){ 
    // User successfully inserted 
    return USER_CREATED_SUCCESSFULLY; 
} 
+0

Überprüfen Sie, ob Ihre Datenbankverbindung erfolgreich war. – DLastCodeBender

+0

Meine Datenbankverbindung war erfolgreich.Aber nach $ stmt-> bind_param() statment gibt es keine Logs. Ich habe die Spaltennamen identisch gefunden.Kann debuggen oder einen Fehler ausgeben was nach Bind_param statement passiert – Techiee

+0

Add 'ini_set ('display_errors ", 1); ini_set ('log_fehler', 1); error_reporting (E_ALL); mysqli_report (MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 'an die Spitze Ihres Skripts. Dadurch werden alle mysqli_-Fehler auf generiert eine Ausnahme, die Sie im Browser sehen können und andere Fehler werden auch in Ihrem Browser sichtbar sein. – RiggsFolly

Antwort

1

Ich habe versucht, den gleichen Code auf meinem lokalen App Engine Server und diese, wo meine Erkenntnisse laufen:

Originalcode:

$stmt = $this->conn->prepare("INSERT INTO users(name) values(?)"); 
$stmt->bind_param("s", "dhieaj"); 

$result = $stmt->execute(); 
echo $stmt->errorInfo(); 
$stmt->close(); 
// Check for successful insertion 
if ($result){ 
// User successfully inserted 
    return USER_CREATED_SUCCESSFULLY; 
} 

Experimente:

$stmt->bind_param("s", "dhieaj"); 
// failed with error (<b>Fatal error</b>: Cannot pass parameter 2 by reference in <b>C:\...) 

so ich mod ified die Zeile:

$param="dhieaj"; 
$stmt->bind_param("s", $param); 

Nächster Fehler ich erhielt, war für: echo $ stmt-> errorinfo(); // (Aufruf an undefinierte Methode mysqli_stmt :: errorInfo()) Also habe ich die Zeile kommentiert.

Dann habe ich Ihre Return-Anweisung zu echo geändert, da meins nur ein Fragment ist, wie von Ihnen gepostet.

Ich bemerkte auch, dass Ihr conn den '$' Deklarationsschlüssel fehlte. ($ conn).

finale Code:

$stmt = $conn->prepare("INSERT INTO users(firstname) values(?)"); 
$p="dhieaj"; 
$stmt->bind_param("s", $p); 

$result = $stmt->execute(); 
// echo $stmt->errorInfo(); 
$stmt->close(); 
// Check for successful insertion 
if ($result){ 
    // User successfully inserted 
    echo "USER_CREATED_SUCCESSFULLY"; 
} 
+0

kann ich nicht um Einträge einzufügen. Ich habe conn anstelle von $ conn benutzt, weil ich auf Klassenebene $ conn definiert habe. – Techiee

+0

Stellen Sie dann sicher, dass Sie keine Zeichenfolgen in bind_param() fest codieren. Übergeben Sie Zeichenfolgen nur als Variablen. Nur der erste Parameter von bind_param() sollte fest codiert sein. @deepakkumar – DLastCodeBender

0

Eigentlich der Code erwähnt hier durch ‚DLastCodeBender‘ korrekt ist, aber noch war ich nicht in der Lage meine issue.The Problem zu lösen, ist mit MAMP sever.I nicht war in der Lage, Slim-Framework mit MAMP.SO laufen zu lassen, installierte ich XAMPP auf meinem Mac & dort alle API arbeitete für mich.