我正在尝试更新名为' FA1'通过网页。 用于此的代码是:
foreach($columns as $item)
{
$sqlAtt = " update ". $class ." set ". $item ." = 'P' where `date` = '". $date ."' ";
$resultAtt = mysqli_query($GLOBALS['con'],$sqlAtt);
if (!$resultAtt) {
printf("Error: %s\n", mysqli_error($GLOBALS['con']));
exit();
}
}
$columns
是表的列名。 $class
是表格名称,$date
具有今天的日期。
在通过SQL命令执行数据库内执行空间更新时,结果是,
1 row affected. (Query took 0.0002 seconds.)
update FA1 set FA14 = 'P' where `date` = '2017-05-22'
通过网页更新我得到的是:
错误:您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在' =' P'附近使用正确的语法。其中`date` =' 2017-05-22''在第1行
如果我输出$ sqlAtt:
update FA1 set FA14
= 'P' where `date` = '2017-05-22' update FA1 set FA11
= 'P' where `date` = '2017-05-22
答案 0 :(得分:1)
从您发布的输出查询中,看起来列名中还有一些额外的空格。请尝试修剪下面的列名,
$sqlAtt = " update ". $class ." set ". trim($item) ." = 'P' where `date` = '". $date ."' ";
要检查$ item中的值,请尝试var_dump($ item)。
答案 1 :(得分:1)
在创建打破查询的$columns
数组时,您似乎有某种类型的换行符,我会先查看。
但是,UPDATE
允许您以“column = value”逗号分隔的样式更改一个查询中的多个列。通过这种方式,您的性能将提高,因为您只运行一个查询,而不是您当前运行的多个查询(每次迭代一次)。这是您应该瞄准的格式:
UPDATE tbl SET
col1 = 'P',
col2 = 'P'
以这种方式做到:
foreach ($columns as $item) {
$sets[] = trim($item) ." = 'P'";
}
$query = "UPDATE $class SET " . implode(',', $sets) . " WHERE `date` = '$date' ";
$resultAtt = mysqli_query($GLOBALS['con'], $query);
if (!$resultAtt) {
printf("Error: %s\n", mysqli_error($GLOBALS['con']));
exit();
}