gpt4 book ai didi

PHP, PDO, Can't get my BETWEEN parameters to register or prepare, 得到 0 行

转载 作者:行者123 更新时间:2023-12-04 04:36:32 25 4
gpt4 key购买 nike

我有这个项目,我将旧的 MySQL 东西转换为 PDO。我已经 7 年多没有写过 PHP 了,但是在过去的两周里我在升级这个项目方面做得很好,在 PHP 和 MySQL 的一些东西上仍然生疏。

我的问题或问题是我无法获取参数 :startLetter 和 :stopLetter 在 PDO 中注册或准备。 :partnerID 工作正常。

如果我将它硬编码为测试,在\'0\' AND\'Z\' 之间它可以正常工作。
我确实将下面数组中的值硬编码为测试,并且我也测试了变量。我进行了搜索,每个人在下面都有几乎相同的东西。

我难住了!

$lc_query = 
'SELECT DISTINCT m.image_file, m.manufacturer' .
' FROM product p' .
' INNER JOIN manufacturer m' .
' ON p.mfg_id = m.mfg_id' .
' INNER JOIN products pp' .
' ON p.prod_id = pp.prod_id' .
' WHERE m.manufacturer BETWEEN \'0\' AND \'Z\' ' .
//' WHERE m.manufacturer BETWEEN :startLetter AND :stopLetter ' .
' AND pp.p_id = :partnerID' .
' AND p.avail_type < 3' .
' ORDER BY m.manufacturer';

$lc_params = array(
//':startLetter' => $lc_alphastart . ', PDO::PARAM_STR',
//':stopLetter' => $lc_alphaend . ', PDO::PARAM_STR',
':partnerID' => $go_sitedict['partner_id'] . ', PDO::PARAM_INT'
);

最佳答案

我认为在 PDOStatement->execute 期间使用数组绑定(bind)时不能指定参数类型.所有参数都被认为是字符串。您实际上将绑定(bind)完整的字符串 0, PDO::PARAM_STR作为起始字母和停止字母相同。您可以使用 PDOStatement->bindParam绑定(bind)单个值并指定值类型,或者在将数组传递给 ->execute 时让 PDO 将其视为字符串(这通常很好,因为几乎每种类型都可以隐式转换为字符串,这意味着 '0'==0 ,即使在 sql 中也是如此)。

所以它变成:

$lc_query = 
'SELECT DISTINCT m.image_file, m.manufacturer' .
' FROM product p' .
' INNER JOIN manufacturer m' .
' ON p.mfg_id = m.mfg_id' .
' INNER JOIN products pp' .
' ON p.prod_id = pp.prod_id' .
//' WHERE m.manufacturer BETWEEN \'0\' AND \'Z\' ' .
' WHERE m.manufacturer BETWEEN :startLetter AND :stopLetter ' .
' AND pp.p_id = :partnerID' .
' AND p.avail_type < 3' .
' ORDER BY m.manufacturer';

$lc_params = array(
':startLetter' => $lc_alphastart,
':stopLetter' => $lc_alphaend,
':partnerID' => $go_sitedict['partner_id']
);

//and to execute query...
$stmt=$DB_Connection->prepare($lc_sql);
$stmt->execute($lc_params);

关于PHP, PDO, Can't get my BETWEEN parameters to register or prepare, 得到 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19671243/

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