2017-08-16 90 views
1

如何获取mysqli_stmt对象的预处理语句?MYSQL错误准备好声明

如果执行mysql语句时出错,我想返回语句。

$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”当然不起作用。那么如何获得完整的查询?在这个例子中:

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

你应该引用的十六进制值。 – EvgenyKolyakov

+3

没有这样的机会。只需使用'error'属性即可。类似:https://stackoverflow.com/questions/2691707/is-there-any-way-to-print-the-actual-query-that-mysqli-execute-makes –

回答

1

这是捕获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()); 
} 

或者最简单的方法:

echo $stmt->error 

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