我从数据库中获取一些值,并将其显示在某些文本字段上。当我更改一个特定值并尝试将其存储回数据库时,它就正确完成了。但是,当我尝试对任何其他文本字段中的任何其他值执行相同操作时,出现错误“语法错误在或附近”。有什么想法吗?
'UPDATE table1 SET "intcolumn"='. $value .', "stringcolumn"=\''. $value2.'\''.' WHERE "column2"='.$value3);
intcolumn更新正确完成。在stringcolumn上,即使我仅更新stringcolumn,我也会收到错误消息
最佳答案
将撇号更改为引号并将值放在定界符中将有助于提高可读性。
这应该使调试更容易,并且比不必转义字符等更容易发现。
pg_query($db, "UPDATE table1 SET intcolumn={$value}, stringcolumn='{$value2}' WHERE column2={$value3}");
更好的方法是使用pg_query_params并让postgres担心转义字符,并停止注入(inject)攻击。
$params = array($value, $value2, $value3);
pg_query_params($db, "UPDATE table1 SET intcolumn=$1, stringcolumn=$2 WHERE column2=$3", $params);