MySQLi在PHP中编写了更新语句

에이바*_*에이바 5 php sql xss mysqli

你怎么写一个准备好的更新声明?参考:mysqli :: prepare

我试过按照描述编写它:

  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);
    }
Run Code Online (Sandbox Code Playgroud)

错误:

准备语句失败:您的SQL语法出错; 检查与MySQL服务器版本对应的手册,以便在'description =附近使用正确的语法?在哪里uid =?' 在第1行编辑的行.

Mic*_*ski 14

您只是在设置列之间缺少逗号:

UPDATE tblFacilityHrs SET title = ?, description = ? WHERE uid = ?
                                ^^^^^^
Run Code Online (Sandbox Code Playgroud)

当MySQL报告错误时,请查看手册以查看在某些内容附近使用的语法,最常查看'某事之前的字符,因为这是您的错误发生的地方.

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

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

$stmt->bind_param('sss', $title, $desc, $uid2);
Run Code Online (Sandbox Code Playgroud)