gpt4 book ai didi

php - postgresql 不支持参数化查询

转载 作者:行者123 更新时间:2023-11-29 11:54:38 24 4
gpt4 key购买 nike

我浏览google没找到。所以我决定在这里问。使用 php pdo 的 postgre 是否支持参数化查询?

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

注意安全,因此注入(inject)证明是绝对必须的。作为旁注,使用另一个数据库不是一种选择。

在对 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
));

不使用绑定(bind)参数

这不适合我插入。

我的代码是这样的:

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

我的数据库类中的查询方法将查询放在私有(private) $_query 字段中,将数组参数放在私有(private) $_parameters 字段中。然后我调用保存方法,它准备语句,将 $this->_query 作为参数传递给 PDO::prepare(),然后调用 PDO::execute,将 $this->_parameters 作为参数。这样插入失败

最佳答案

是的,参数化查询与 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'];

关于php - postgresql 不支持参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com