PHP - PostgreSQL 更新表时出错

标签 php postgresql sql-update syntax-error

我从数据库中获取一些值并将它们显示在一些文本字段上。当我更改一个特定值并尝试将其存储回数据库时,它已正确完成。但是,当我尝试对任何其他文本字段中的任何其他值执行相同的操作时,我收到错误“语法错误位于或附近”。有什么想法吗?

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

关于PHP - PostgreSQL 更新表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19375400/

相关文章:

php - 我如何向新注册用户发送确认电子邮件?

php - 简单 XML 命名空间警告

php - 在 PHP 中复制大文件(超过 2 GB)

mysql - 更新表内连接

php - 在 mysql 查询中从数组中选择 WHERE

postgresql - DBeaver 无法访问非默认数据库

python - 如何在 SQL 中找到时间戳中的间隙(对于数据抓取器)

mysql - 根据重复值更新字段

sql - 从另一个表中的行批量更新表

ruby-on-rails - 无法让 heroku 与 rails 3.x postgresql 一起工作