这个准备好的语句更新查询不起作用......为什么?

时间:2016-03-23 13:48:24

标签: mysql sql sql-update prepared-statement

$query="UPDATE `db`.`tb` SET `colA` = ?, `colB` = ?, `colC` = ?, `colD` = ?, `colE` = ?, `colF` = ?, `colG` = ? WHERE `tb`.`colA` = ? AND month(date)= ?;";
$stmt = $web_dbi->prepare($query);
$stmt->bind_param("sssssssss", $colA_PHPvar, $colB_PHPvar, $colC_PHPvar, $colD_PHPvar, $colE_PHPvar, $colF_PHPvar, $colG_PHPvar, $colA_PHPvar, $colB_PHPvar);
$stmt->execute();

其他信息:

  1. datedb中列的名称。tb ...
  2. 当我从Where子句中移除AND month(date)= ?并且它是相应的?变量时,此查询有效...

1 个答案:

答案 0 :(得分:0)

想通了......我通过AJAX传递了一个日期变量,该变量被格式化为月份的数字表示(即1月= 1 ...),并包含date列作为列更新(格式化为MySQL中的日期)(m-1-yyyy),当我真正只需要Where子句中的date列(月份的数字表示成功匹配月份(date)时数据库和更新的其他字段,并在更新date时正确格式化错误(数据库中的date只是本月的第一个(m-1-yyyy))(这里可以保持不变)。

$query="UPDATE `db`.`tb` SET `colA` = ?, `colB` = ?, `colC` = ?, `colE` = ?, `colF` = ?, `colG` = ? WHERE `tb`.`colA` = ? AND month(date)= ?;";
$stmt = $web_dbi->prepare($query);
$stmt->bind_param("sssssssss", $colA_PHPvar, $colB_PHPvar, $colC_PHPvar, $colE_PHPvar, $colF_PHPvar, $colG_PHPvar, $colA_PHPvar, $colB_PHPvar);
$stmt->execute();

colD$colD_PHPvar是通过AJAX传递的日期变量,作为月份的数字表示(即1月= 1 ......)......