gpt4 book ai didi

php - 使用 PDO 时出现分解字符串数组的问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:46 25 4
gpt4 key购买 nike

问题是当我执行 var_dump() 时我收到了想要的结果,但是当 PDO 处理它时它跳过了数组条目之一,我似乎没有收到想要的结果。

  $bd = $userObj->fetchPanel(array('category_id'=>$cdata['id']));
//echo '<pre>'; var_dump($bd); echo '</pre>';die;
$barr = array();
if(count($bd) > 0){
foreach($bd as $bval){
$barr[] = $bval['id'];
}}

echo '<pre>'; var_dump(implode(',', $barr)); echo '</pre>';

var_dump() 返回 - string(7) "270,498" - 这是所需的。

                $bragdataarr = $db->dbh->prepare("SELECT p.id,p.brag,p.brag_desc,p.brag_id,p.user_id, p.panel_id,p.domainurl,p.type,p.price FROM ".USERS_BRAG." as p left join ".USERS." as u on p.user_id=u.id WHERE u.status !=0 AND p.panel_id IN (:imp) AND p.status = :status ORDER BY p.id DESC LIMIT :lim, :page");

echo '<pre>'; var_dump(implode(',', $barr)); echo '</pre>';

var_dump() 返回 - string(7) "270,498" - 这是所需的。

                $imp = implode(',',$barr);

echo '<pre>'; var_dump($imp); echo '</pre>';

var_dump() 返回 - string(7) "270,498" - 这是所需的。

                $brgdataarr->bindValue(':imp',$imp ? $imp : "",PDO::PARAM_STR);

echo '<pre>'; var_dump($bragdataarr->bindValue(':imp',$imp ? $imp : "",PDO::PARAM_STR)); echo '</pre>';

var_dump() 返回 - bool(true) - 这是所需的。但是,显示的只是字符串“270”,而不是两个“270,498”。为什么会这样?

                $brgdataarr->bindValue(':status',1, PDO::PARAM_INT);                
$brgdataarr->bindValue(':lim',$limit_start, PDO::PARAM_INT);
$brgdataarr->bindValue(':page',$page_records, PDO::PARAM_INT);
$brgdataarr->execute();
$brgdataarr = $brgdataarr->fetchAll(PDO::FETCH_ASSOC);

根据我的故障排除,我发现只有当我将 bindValue() 与 implode 一起使用时才会发生这种情况。如果我在 SQL 语句中包含 implode,则 implode 可以正常工作,但是当 implode 遇到它时,我会收到空​​字符串错误。

例子:

 $brgdataarr = $db->dbh->prepare("SELECT p.id,p.brag,p.brag_desc,p.brag_id,p.user_id, p.panel_id,p.domainurl,p.type,p.price FROM ".USERS_BRAG." as p left join ".USERS." as u on p.user_id=u.id WHERE u.status !=0 AND p.panel_id IN (".implode(',',$barr).") AND p.status = :status ORDER BY p.id DESC LIMIT :lim, :page");

最佳答案

我认为这是因为您对整数集的引用。此外,您的 LIMIT 语法可能有拼写错误。让我们使用标准的 LIMIT :limit OFFSET :offset 语法,更具可读性并与每个数据库兼容。

$imp = $imp? implode(',',array_map($imp,array(PDO,'quote'))):"'-1'";

$brgdataarr = $db->dbh->prepare("SELECT p.id,p.brag,p.brag_desc,p.brag_id,p.user_id, p.panel_id,p.domainurl,p.type,p.price FROM ".USERS_BRAG." as p left join ".USERS." as u on p.user_id=u.id WHERE u.status !=0 AND p.panel_id IN (".$imp.") AND p.status = :status ORDER BY p.id DESC LIMIT :lim OFFSET :page");

关于php - 使用 PDO 时出现分解字符串数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062094/

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