当通过PHP将数据插入PostgreSQL数据库时,我应该将数据嵌入到函数sql INSERT
中的pg_query
语句中,还是将数据通过数组传递到pg_insert
功能?
我的猜测是pg_insert
,因为它只是将数据直接插入到表中而不是查询表然后插入它。
请访问http://php.net/manual/en/book.pgsql.php以获取这两项功能的参考。
答案 0 :(得分:2)
为避免SQL注入,您希望将接受SQL参数的方法作为方法参数调用。这样,您的 SQL库可以确保正确转义参数。永远不要通过"追加"来构建自己的SQL语句。字符串片段。如果这样做,则负责SQL转义参数。这很难做对。
因此,您应该更喜欢pg_query_params
(或pg_insert
)而不是pg_query
。
这是错误的(因为你必须记得逃避$ arg1参数。这很难。):
pg_query("INSERT INTO TABLE ... VALUES " . $arg1 . ";");
是的(因为PostgresQL的聪明人知道如何逃避你的参数):
pg_query_params("INSERT INTO TABLE ... VALUES $1", "FooBar");