gpt4 book ai didi

php - 在 PHP 中使用 PDO 对数据库中的所有数据进行计数, 'WHERE' 是一个必须清理的变量

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

我正在尝试计算项目列表中 id 与用户输入匹配的所有行。我将所有代码从 mysql 切换到 PDO,因为我发现它要好得多。

下面的代码是我发现适合我的情况的代码。

$id = '0';
$sql="SELECT count(*) FROM item_list WHERE item_id = $id";
$data=$connMembers->query($sql)->fetchcolumn();
echo $data;

但是,由于 SQL 注入(inject),实时站点并不安全。

我想知道如何更改它以净化用户输入。

我更喜欢使用准备和执行函数,以便变量单独保存。

那我能做点什么吗?

最佳答案

这是您开始绑定(bind)参数的地方。我更喜欢使用 ? 和一个输入数组来完成此操作。

假设 $connMembers 是您的 PDO 对象:

$sql="SELECT COUNT(*) FROM item_list WHERE item_id = ?";
$input=array($id); //Input for execute should always be an array

$statement=$connMembers->prepare($sql);
$statement->execute($input);
$data=$statement->fetchObject();

var_dump($data);

要向 SQL 添加更多变量,只需向查询添加另一个 ? 并将该变量添加到输入即可。

$sql="SELECT COUNT(*) FROM item_list WHERE item_id = ? AND item_name=?";
$input=array($id, $name); //Input for execute should always be an array

$statement=$connMembers->prepare($sql);
$statement->execute($input);
$data=$statement->fetchObject();

var_dump($data);

或者您可以使用bindParam:

$sql="SELECT COUNT(*) FROM item_list WHERE item_id = :itemID";

$statement=$connMembers->prepare($sql);
$statement->bindParam(':itemID', $id);
/*Here I am binding parameters instead of passing
an array parameter to the execute() */


$statement->execute();
$data=$statement->fetchObject();

var_dump($data);

关于php - 在 PHP 中使用 PDO 对数据库中的所有数据进行计数, 'WHERE' 是一个必须清理的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14288987/

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