MySQLi用PHP编写了update语句

MySQLi用PHP编写了update语句,php,sql,mysqli,xss,Php,Sql,Mysqli,Xss,如何编写准备好的update语句?参考: 我试着按照以下描述来写: if ($stmt = $mysqli->prepare("UPDATE tblFacilityHrs SET title =? description = ? WHERE uid = ?")){ $stmt->bind_param('sss', $title, $desc, $uid2); //Get params $title=$_PO

如何编写准备好的update语句?参考:

我试着按照以下描述来写:

  if ($stmt = $mysqli->prepare("UPDATE tblFacilityHrs SET title =? description = ? WHERE uid = ?")){
            $stmt->bind_param('sss', $title, $desc, $uid2);

            //Get params
            $title=$_POST['title'];
            $desc=$_POST['description'];
            $uid2=$_GET['uid'];     

$stmt->execute();
            $stmt->close();
    }
    else {
        //Error
        printf("Prep statment failed: %s\n", $mysqli->error);
    }
错误:

准备状态失败:您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near'description=?其中第1行的uid=?' 划船


您只是在集合列之间缺少一个逗号:

UPDATE tblFacilityHrs SET title = ?, description = ? WHERE uid = ?
                                ^^^^^^
当MySQL报告错误时,比如检查手册中“某物”附近要使用的语法,最常见的是查看“某物”前面的字符,因为这就是错误发生的地方

注意:您可能需要在设置输入变量之后而不是之前调用
bind_param()
。我不记得MySQLi是如何解析它们的,以及它们何时被绑定的,但从逻辑上讲,在代码中首先设置它们,然后再进行绑定更有意义

//Get params
$title=$_POST['title'];
$desc=$_POST['description'];
$uid2=$_GET['uid'];   

$stmt->bind_param('sss', $title, $desc, $uid2);

您可能需要添加逗号:

$stmt = $mysqli->prepare("UPDATE tblFacilityHrs SET title = ?, description = ? WHERE uid = ?"

在将参数指定给变量之前,您将绑定这些参数:

$title=$_POST['title'];
$desc=$_POST['description'];
$uid2=$_GET['uid']; 

$stmt->bind_param('sss', $title, $desc, $uid2);

编辑:请注意,在定义变量之前或之后是否绑定参数似乎没有什么区别(你每天都会学到新东西!),但正如Michael所说,从逻辑上讲,首先定义它们是有意义的。

是的,首先定义它们确实更有意义!