0

我正在尝试使用 mysqli 准备好的语句创建事件,但代码不起作用我发现当我将 mysqli 语句放在准备好的语句中时引用某些子句,例如 ON、WHERE、SET、AND、UPDATE 都变成红色颜色我一直在试图弄清楚,但还没有,代码不起作用,请我需要有人来修复我的代码。

$d_sql = $connect->prepare("CREATE EVENT stop_fad_1 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE ON COMPLETION PRESERVE DO UPDATE fad SET active_status=? WHERE fad_id=? AND sender=? AND reciever=?");
             $d_sql->bind_param("iiii",$complete_status,$fad_id,$sender,$reciever);
             $d_sql->execute();

然后我收到这样的错误,但我检查了我提供给语句的数据,它们都是正确的

Fatal error: Call to a member function bind_param() on boolean in C:\xampp\htdocs\Alertmedia\fad\php\comfirm_gp_fad.php on line 35
4

1 回答 1

0

CREATE VIEW在准备好的语句中不受支持。

https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html列出了准备好的语句中可能使用的 SQL 语句。

在解析之前,您必须将变量插入到 CREATE EVENT 语句中。这意味着您必须小心确保变量仅包含预期的格式(例如,整数)。

$complete = (int) $complete;
fad_id = (int) $fad_id;
$sender = (int) $sender;
$reciever = (int) $reciever;

$d_sql = $connect->query("
  CREATE EVENT stop_fad_1 ON SCHEDULE 
    AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE 
    ON COMPLETION PRESERVE 
  DO 
    UPDATE fad SET active_status=$complete_status 
    WHERE fad_id=$fad_id AND sender=$sender AND reciever=$reciever
  ");
于 2018-04-09T14:03:32.473 回答