使用预处理语句不能使用mysql查询

时间:2014-01-17 01:08:44

标签: php mysql

我试图了解这个查询的错误。

$query = "INSERT INTO turni (data, utenteId, turno_ceduto, tipo_turno_ceduto,
turno_cercato, 
note, date) VALUES (?, ?, ?, ?, ?, ?, NOW())";

$stmt = mysqli_prepare($dbc,$query);
mysqli_stmt_bind_param($stmt,'sissss', $data, $utenteId, $turno_ceduto,
$tipo_turno_ceduto, $turno_cercato, $note);

mysqli_stmt_execute($stmt);
$count = mysqli_stmt_affected_rows($stmt);

为什么$ count -1 ??

2 个答案:

答案 0 :(得分:1)

问题

  

为什么$ count -1 ??

答案

  

-1表示查询返回了错误

mysqli_stmt_affected_rows

你用mysqli_error检查错误,它会返回上一个错误的字符串描述。

  

你从最后一个mysqli函数得到错误描述,而不是从最后一个mysql错误。

答案 1 :(得分:0)

每次prepare()和execute()后,总是检查错误,并报告错误。

以下是一个例子:

if (($stmt = mysqli_prepare($dbc,$query)) === false) {
    trigger_error(mysqli_error($dbc), E_USER_ERROR);
}
mysqli_stmt_bind_param($stmt,'sissss', $data, $utenteId, $turno_ceduto,
    $tipo_turno_ceduto, $turno_cercato, $note);

if (mysqli_stmt_execute($stmt) === false) {
    trigger_error(mysqli_stmt_error($stmt), E_USER_ERROR);
}
$count = mysqli_stmt_affected_rows($stmt);