gpt4 book ai didi

php - 尝试使用模块化查询时,PDO fetch 不返回任何内容

转载 作者:行者123 更新时间:2023-11-29 22:48:52 25 4
gpt4 key购买 nike

这个想法是,我有一个用户数组,从中获取键来创建一个供 pdo 准备的字符串(用户索引)。然后将该数组中的用户绑定(bind)到相应的参数。

$sql = SELECT * FROM `tablename` WHERE `payload` IS NOT NULL

我向该字符串添加了一个参数:

foreach($users as $key => $user){
$sql = $sql." AND `user` LIKE :user".$key;
}

注意:我只是使用通过对用户定义的字符串进行 explode 语句生成的数组中的键。不能100%确定 key 是否安全,但我没有找到相关信息。

使用 users = array([0]=>01) 生成的字符串等于:

SELECT * FROM `tablename`
WHERE `payload` IS NOT NULL
AND `user` LIKE :user0

后来我使用这个绑定(bind)值:

foreach($users as $key => $user){
$stmt->bindValue(":user".$key, "\"%".$user."%\"");
}

这意味着 execute() 的语句等于:

SELECT * FROM `tablename` WHERE `payload` IS NOT NULL AND `user` LIKE "%01%"

如果我在 phpmyadmin 上执行此语句,我会得到 368 个结果,但这个 while 循环根本不会执行:

while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
// do stuff
}

$db->e​​rrorInfo() 返回此数组 ( [0] => 00000 [1] => [2] => )

<小时/>

编辑:已解决。
我不需要向参数添加引号,因为 mysql 正在搜索我的列的引号。

最佳答案

我建议这个解决方案:

<?php

$sql = "SELECT * FROM `tablename` WHERE `payload` IS NOT NULL";

foreach($users as $key => $user){
$sql .= " AND `user` LIKE ?";
}

$i = 1;
foreach($users as $key => $user){
$stmt->bindValue($i, "\"%".$user."%\"", PDO::PARAM_STR);
++$i;
}

?>

关于php - 尝试使用模块化查询时,PDO fetch 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28978120/

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