Php 如何在不连接字符串的情况下插入postgre数据库?

Php 如何在不连接字符串的情况下插入postgre数据库?,php,database,postgresql,Php,Database,Postgresql,我的代码如下: $sql = "INSERT INTO oraculo VALUES(".$name.$pass.")"; pg_query($dbconn, $sql); $sql = "INSERT INTO oraculo VALUES(?, ?)"; //set the value of first '?' setValue(1, "somename"); //set the value of second '?' setValue(2, "somepass"); pg_qu

我的代码如下:

 $sql = "INSERT INTO oraculo VALUES(".$name.$pass.")";
    pg_query($dbconn, $sql);
$sql = "INSERT INTO oraculo VALUES(?, ?)";
//set the value of first '?'
setValue(1, "somename");
//set the value of second '?'
setValue(2, "somepass");
pg_query($dbconn, $sql);
在java中,我使用PreparedStament插入值而不连接字符串(如果im正确,则避免sql注入)。可以在PHP中执行类似的操作吗?我想做这样的事情:

 $sql = "INSERT INTO oraculo VALUES(".$name.$pass.")";
    pg_query($dbconn, $sql);
$sql = "INSERT INTO oraculo VALUES(?, ?)";
//set the value of first '?'
setValue(1, "somename");
//set the value of second '?'
setValue(2, "somepass");
pg_query($dbconn, $sql);
您可以使用来在PHP中对postgres执行准备好的语句

因此,您的代码如下所示:

pg_prepare($dbconn, "login", 'SELECT * FROM shops WHERE name = $1');
$rs = pg_execute($dbconn, "login", array("somename", "somepass"));

或者使用
pg\u query\u参数
。或者,你知道,PDO,它已经取代了不受欢迎的mysqli和pg驱动程序10年了…@CraigRinger抱歉地说——我知道你不是PHP开发人员;)——PDO没有弃用pg_*驱动程序。它为所有驱动程序提供了一个通用接口,但牺牲了性能和一些特性。PHP的pg_*仍在维护中,并且随着时间的推移有了新的特性。如果您知道您的项目将只使用PostgreSQL,则应首选这些工具。@greg好的,谢谢,很高兴知道。文档和讨论给我的印象是,PDO旨在替换单个驱动程序,而不是包装它们。很抱歉给你带来了困惑。我坚持我的评论,PHP文档在pg_查询页面上没有提供指向和的巨大警告,这是令人震惊的疏忽。它说“在大多数情况下,pg_query_params()应该是首选的。”但考虑到这类问题,这种说法显然太弱了。虽然公平地说,PHP的文档非常可怕——pg_查询的文档应该有巨大的响亮警告指向这些页面。