Mysql 此准备好的语句更新查询不是';不工作。。。为什么?
其他信息:Mysql 此准备好的语句更新查询不是';不工作。。。为什么?,mysql,sql,sql-update,prepared-statement,Mysql,Sql,Sql Update,Prepared Statement,其他信息: date是dbtb中列的名称 当我从Where子句中删除和MOUNT(date)=?及其相应的?变量时,此查询就会工作 我想出来了。。。我通过AJAX传递一个日期变量,该变量的格式为月份的数字表示形式(即一月=1…),并将date列作为要更新的列(格式为MySQL中的日期)(m-1-yyyy),而实际上我只需要Where子句中的date列(月的数字表示形式成功地匹配了数据库中的月(日期),并更新了其他字段,并且在更新日期(日期)时正确地设置了错误的格式(数据库中的日期只不过是月的第一
date
是db
tb
中列的名称李>
和MOUNT(date)=?
及其相应的?
变量时,此查询就会工作我想出来了。。。我通过AJAX传递一个日期变量,该变量的格式为月份的数字表示形式(即一月=1…),并将
date
列作为要更新的列(格式为MySQL中的日期)(m-1-yyyy),而实际上我只需要Where子句中的date
列(月的数字表示形式成功地匹配了数据库中的月(日期
),并更新了其他字段,并且在更新日期
(日期
)时正确地设置了错误的格式(数据库中的日期只不过是月的第一个月(m-1-yyyy))(在这里可以保持不变)
(
colD
和$colD\u PHPvar
是通过AJAX传递的日期变量,作为月份的数字表示(即一月=1…)。什么是“不起作用的”意思是?如果您的意思是没有行被更新,最有可能的解释是没有行有问题的月份。AJAX调用返回成功消息,数据库记录没有更新……可能是一个未提交的sql事务?date
是MySQL中的一个关键字(以及许多其他RDBMS)。因此,使用列名不是一个好主意。您可以尝试在列名周围使用反勾号,这可能会解决问题。解决了…我通过AJAX传递了一个日期变量,该变量的格式为月份的数字表示形式(即一月=1…),并将日期列作为要更新的列(在MySQL中格式化为日期),实际上我只需要Where子句中的date
列(月的数字表示形式成功地匹配了数据库中的月(date
),并更新了其他字段,并且在更新date
时正确地格式化了error(date
在数据库中只是一个月的第一天(m-1-yyyy)(在这里可以保持不变)…我感谢您的帮助…保持优雅。。。
$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();
$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();