带有WHERE AND的MySQLI语句


MySQLI statement with WHERE AND

我试图在查找一行的基础上更新一个表,其中"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

没有括号。