Php postgresql不支持参数化查询
我通过浏览谷歌没能找到答案。所以我决定在这里问。使用php pdo的postgre是否支持参数化查询 如果没有。我怎样才能达到同样的安全 注意安全,因此注射证明是绝对必须的。使用另一个数据库不能作为旁注 在对丰尼尼的回应中 参数化查询如下:Php postgresql不支持参数化查询,php,postgresql,pdo,Php,Postgresql,Pdo,我通过浏览谷歌没能找到答案。所以我决定在这里问。使用php pdo的postgre是否支持参数化查询 如果没有。我怎样才能达到同样的安全 注意安全,因此注射证明是绝对必须的。使用另一个数据库不能作为旁注 在对丰尼尼的回应中 参数化查询如下: $st = $db->prepare( "insert into vendors set first_name = :first_name, last_name = :last_name"
$st = $db->prepare(
"insert into vendors set
first_name = :first_name,
last_name = :last_name"
);
$st->execute(array(
':first_name' => $vendor->first_name,
':last_name' => $vendor->last_name
));
$project = new Project();
$project->id = 'sequence string';
$project->projectName = 'A project name';
$project->saveProject();
不使用bindParam
这不适合我
我的代码如下所示:
$st = $db->prepare(
"insert into vendors set
first_name = :first_name,
last_name = :last_name"
);
$st->execute(array(
':first_name' => $vendor->first_name,
':last_name' => $vendor->last_name
));
$project = new Project();
$project->id = 'sequence string';
$project->projectName = 'A project name';
$project->saveProject();
在项目模型中:
public function saveProject() {
$this->_db->query("INSERT INTO projects VALUES (:id,:projectName)", array(':id' => $this->_projectFields['id'], ':projectName' => $this->_projectFields['projectName']))->save();
}
my db类中的查询方法将查询放在private$\u查询字段中,将aray参数放在private$\u参数字段中。然后调用save方法,该方法准备语句,将$this->_查询作为参数提供给PDO::prepare(),然后调用PDO::execute,将$this->_参数作为参数提供给PDO::prepare()。这无法插入是的,参数化查询与PHP PDO完美结合
$db = new PDO('pgsql:host=localhost;dbname=cars', 'user', 'password');
$cars = $db->prepare('SELECT * FROM cars WHERE id = :id');
$cars->bindParam(':id', $id = 20, PDO::PARAM_INT);
$cars->execute();
$result = $cars->fetch();
echo 'Name: ' . $result['name'];
有几种方法可以传递值,而不是用值的文本表示构建SQL语句 很可能是你在想什么 您还可以(“存储过程”)并将值作为参数提交
下面是一个相关问题的答案为什么不呢?我不知道PDO,但PostgreSQL支持JDBC和ODBC中的参数化查询。因为如果我使用非参数化查询,它会插入数据,而使用参数化查询则不会。使用完全相同的数据。我用打印和回音验证过了。显示你的代码。问题出在您这边,而不是PostgreSQL。为什么不使用pg_query_params()?当您仅使用PostgreSQL时,PDO只是开销。只使用PHPI中的PostgreSQL函数不知道php中为postgre构建的标准函数,但我们总是在项目中使用PDO。这是标准。项目也会变得相当庞大,与android等其他平台进行交流。很好的发现,感谢链接。我明白你的想法,但我用我编辑的问题代码+1对于链接,您是否有错误或只是没有插入数据?save()方法不存在。save方法存在于我的数据库类中。我创造了它。我首先在dbhelper类中调用query方法,该方法设置一些变量,然后调用save(),以保存该数据。我没有发现错误,应用程序流按预期工作。它只是不插入数据。如果你读了我的编辑文章,我希望它会变得更清晰。你有没有尝试将这个参数添加到你的PDO对象中$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);没有,我没有。我会在星期一回来工作的时候做这件事。谢谢你指出这一点。希望这会有帮助。我现在不能再测试任何东西了。你确信这是可能的吗?如果没有bindParam方法,我打电话给一位同事让我访问工作服务器。查询中生成了错误。非常感谢。