postgresql缺乏对parameterizd查询的支持 [英] postgresql lacking support for parameterizd queries

查看:76
本文介绍了postgresql缺乏对parameterizd查询的支持的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过浏览Google未能找到答案.所以我决定在这里问.我可以使用php pdo在postgre中支持参数化查询吗?

I failed to find out by browing google. So i decided to ask here. Is parameterezed query supported i postgre using php pdo?

如果没有.我怎样才能达到同样的安全性?

If not. How can i reach the same safety?

请注意,安全性因此是绝对必要的.不能选择使用其他数据库.

Note that safety, thus injection prove is an absolute must. Using another database is not an option as a sidenote.

回应Fonini;

像这样的参数化查询:

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

不使用bindParam

not using bindParam

这不会为我插入.

我的代码如下:

$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();

}

我的db类中的查询方法将查询放在私有$ _query字段中,将aray参数放在私有$ _parameters字段中.然后,我调用save方法,该方法准备语句,将$ this-> _ query作为参数提供给PDO :: prepare(),然后调用PDO :: execute,将$ this-> _ parameters作为参数.无法插入

the query method in my db class puts the query in the private $_query field, and the aray parameter in the private $_parameters field. I then call the save method, which prepares the statement, giving $this->_query as parameter to PDO::prepare(), and then call PDO::execute giving $this->_parameters as parameter. This fails to insert

推荐答案

是的,参数化查询与PHP PDO完美配合.

Yes, parameterized queries work perfectly with 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'];

这篇关于postgresql缺乏对parameterizd查询的支持的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆