2017-08-16 2 views
1

Comment obtenir l'instruction préparée de l'objet mysqli_stmt?Erreur MYSQL Obtenir l'instruction préparée

S'il y a une erreur lors de l'exécution de l'instruction mysql, je veux retourner l'instruction.

$id = "89c483c8"; 
$query = "SELECT * FROM database WHERE id = ?"; 
if (!($stmt = $database->prepare($query) { ... } 
else { 
    $stmt->bind_param("s", $id); 
    if (!$stmt->execute()) 
     return $stmt->get_statement; //doesn't exist 
} 

"$ stmt-> get_statement" ne fonctionne bien sûr pas. Alors, comment puis-je obtenir la requête complète? Dans cet exemple:

"SELECT * FROM database WHERE id = 89c483c8" 
+0

Vous devriez citer la valeur hexadécimale . – EvgenyKolyakov

+3

Il n'y a pas une telle opportunité. Utilisez simplement la propriété 'error'. Similaire: https://stackoverflow.com/questions/2691707/-there-any-way-to-print-the-actual-query-that-mysqli-execute-makes –

Répondre

1

Ceci est la meilleure façon de détecter les erreurs sql:

try { 
    $res = $mysqli_instance->query($query); 
}catch (mysqli_sql_exception $e) { 
    print "Error Code <br>".$e->getCode(); 
    print "Error Message <br>".$e->getMessage(); 
    print "Strack Trace <br>".nl2br($e->getTraceAsString()); 
} 

Ou la façon la plus simple:

echo $stmt->error 

http://php.net/manual/en/mysqli.error.php