如何在mysqli prepared语句中调度事件

s5a0g9ez  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(387)

我试图使用mysqli prepared语句创建事件,但代码不起作用,我发现当我将mysqli语句放在prepared语句中时,引用了一些子句,如on、where、set和,更新所有变成红色的颜色我一直在试图找出它,但还没有和代码不工作,请我需要有人来修复我的代码。

$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
drkbr07n

drkbr07n1#

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
  ");

相关问题