gpt4 book ai didi

php - PDO 准备好的语句不返回结果

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

function db_execute($sql,$db,$array)
{
require(getcwd() . '/config/config.php');

if (empty($array))
{
$array = "";
print "Something wrong";
}
$connection = db_connect($db_host,$db_username,$db_password,$db);
$q = $connection->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));


$q ->execute(array($array));

if(!$q)
{
die("Error! " . $connection->errorInfo());
}

$result = $q -> fetchAll();

return $result;
}

$sql = "SELECT VALUE FROM users WHERE :id = :idnum";
$array = array(':id' => 'USER_ID', ':idnum' => '2');


printFormattedArray($array);
printFormattedArray(db_execute($sql,"user_db",$array));

出于某种原因,我无法从此函数中获取任何结果来返回任何结果。但是当我用

替换查询时
$sql = "SELECT VALUE FROM users WHERE USER_ID = 2";

它给了我所需的结果。我做错了什么?

最佳答案

基本上,您有 2 个选择。

.1。避免在查询中使用动态标识符。
因此,进行第二个查询。

$sql   = "SELECT VALUE FROM users WHERE USER_ID = :idnum";
$array = array(':idnum' => '2');
$data = db_execute($sql, $array);

.2。如果您需要动态标识符,则还需要为其指定一个独特的占位符
所以,你的代码就像

$sql   = "SELECT VALUE FROM users WHERE ?n = ?i";
$data = db_execute($sql, 'USER_ID', 2);

另外,

  • 从不在查询执行函数中连接。连接一次,然后使用打开的连接
  • 始终将 PDO 设置为报告 mysql 错误

连接后添加此代码

$connection->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

关于php - PDO 准备好的语句不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14868296/

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