我试图在查找一行的基础上更新一个表,其中"mentor_id"answers"feedbacker_id"与输入的变量匹配。我使用的是以下语句:
/* create a prepared statement */
if ($stmt = mysqli_prepare($mysqli, "UPDATE feedback SET (last_updated=?, p2q1=?, p2q2=?, p2q3=?, p2q4=?)
WHERE mentor_id=? AND feedbacker_id=?")) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "sssssss", $time,$p2q1,$p2q2,$p2q3,$p2q4,$mentor_id,$feedbacker_id);
/* execute query */
mysqli_stmt_execute($stmt);
/* close statement */
mysqli_stmt_close($stmt);
}
在MySQLI语句之前,我测试了每个变量,以检查它们是否都包含info和do。我在PHP页面上没有收到任何反馈(没有错误),表中的行也没有更新。有人能帮上忙吗?这可能是错误的?
谢谢你的建议。我得到错误:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(last_updated=?, p1q1=?, p1q2=?, p1q3=?, p1q4=?) WHERE mentor_id=? AND feedba' at line 1"
不过,我没有看到语法上有任何明显的错误?
根据@gerald schneider的建议修复:
/* create a prepared statement */
if ($stmt = mysqli_prepare($mysqli, "UPDATE feedback SET last_updated=?, p2q1=?, p2q2=?, p2q3=?, p2q4=? WHERE mentor_id=? AND feedbacker_id=?")) {
/* bind parameters for markers */
/* Bind parameters. Types: s = string, i = integer, d = double, b = blob */
mysqli_stmt_bind_param($stmt, "sssssss", $time, $p2q1, $p2q2, $p2q3, $p2q4, $mentor_id, $feedbacker_id);
/* execute query */
mysqli_stmt_execute($stmt);
/* close statement */
mysqli_stmt_close($stmt);
}
从查询中删除括号。UPDATE语法为
UPDATE table SET x=foo WHERE y=bar
没有括号。