Php 注意:类PDOStatement的对象无法转换为int
我无法找出上面的错误。以前有人见过这个吗。我将PHP与Smarty一起使用,并将PDO合并到我的代码中 PHP变量_转储代码$dataPhp 注意:类PDOStatement的对象无法转换为int,php,mysql,pdo,smarty,Php,Mysql,Pdo,Smarty,我无法找出上面的错误。以前有人见过这个吗。我将PHP与Smarty一起使用,并将PDO合并到我的代码中 PHP变量_转储代码$data$smarty->assign(“结果”,$data) Smarty模板中的PHP错误: 注意:第25行的/var/www/vhosts/somesite.com/httpdocs/templates_c/3d14690fd8419657273a6dce45bbca85dfc1e261.file.bragsdata.tpl.php中的类PDOStatement的对
$smarty->assign(“结果”,$data)代码>
Smarty模板中的PHP错误:
注意:第25行的/var/www/vhosts/somesite.com/httpdocs/templates_c/3d14690fd8419657273a6dce45bbca85dfc1e261.file.bragsdata.tpl.php中的类PDOStatement的对象无法转换为int
Smarty模板的第25行:
$\u smarty\u tpl->tpl\u vars['smarty']->value['section']['res']['loop']=is\u数组($\u loop=$\u smarty\u tpl->getVariable('results')->value)?计数($\u循环):最大值(0,(int)$\u循环);取消设置($_循环)
不确定问题出在哪里。非常感谢你的帮助
更新:使用fetchAll(PDO::FETCH_ASSOC)调用函数代码>
这是因为PDOStatement
严格来说不是数组类型。不过,它实现了可遍历的,所以我很惊讶Smarty不接受它是可以循环的
要将数据库结果转换为标准数组,必须使用->fetchAll()
:
这是因为PDOStatement
严格来说不是数组类型。不过,它实现了可遍历的,所以我很惊讶Smarty不接受它是可以循环的
要将数据库结果转换为标准数组,必须使用->fetchAll()
:
错误消息非常简单-$data
变量包含与预期不同的内容。
看起来您正在将整个PDO对象传递到模板中,而不是首先获取某个特定值
我建议在没有Smarty或任何东西的情况下,单独与PDO玩一段时间,以熟悉它并学习如何获得所需的价值。
或者在赋值之前,至少使用var\u dump()
检查您的值。错误消息非常简单-$data
变量包含与预期不同的内容。
看起来您正在将整个PDO对象传递到模板中,而不是首先获取某个特定值
我建议在没有Smarty或任何东西的情况下,单独与PDO玩一段时间,以熟悉它并学习如何获得所需的价值。
或者至少在赋值之前用var_dump()
检查你的值。我猜是因为是PDOStatement上的数组()
给出了false
。我猜是因为是PDOStatement上的数组()
给出了false
。我刚刚用应该返回fetchAll的函数调用更新了我的帖子,但它显然不起作用。您的建议确实在函数外部起作用,但为什么会这样?@ClaudeGrecea您应该从您的函数返回$res->fetchAll(PDO::FETCH_ASSOC)
。这很有效!你就是那个人!你能推荐一本关于PDO高级主题的书或网站吗?PHP.net在解释方面做得很差;它应该真的支持传递查询结果对象。我刚刚用应该返回fetchAll的函数调用更新了我的帖子,但它显然不起作用。您的建议确实在函数外部起作用,但为什么会这样?@ClaudeGrecea您应该从您的函数返回$res->fetchAll(PDO::FETCH_ASSOC)
。这很有效!你就是那个人!你能推荐一本关于PDO高级主题的书或网站吗?PHP.net在解释方面做得很差;它应该真正支持传入查询结果对象。
object(PDOStatement)#22 (1) {
["queryString"]=> string(236) "SELECT p.id,p.brag,p.brag_desc,p.brag_id,p.user_id, p.panel_id,p.domainurl,p.type,p.price FROM ruj_users_bg as p left join ruj_users as u on p.user_id=u.id WHERE u.status !=0 and 1 and p.status = 1 GROUP BY p.id DESC LIMIT 0 OFFSET 25" }
$data = fetchData($limit_start,$page_records);
function fetchData$limit_start,$page_records){
$db = Core::getInstance();
$sql = "SELECT id FROM ruj_users_bg WHERE
(type = :type3 OR type = :type4)
AND status =:uno
ORDER BY id DESC LIMIT :lim OFFSET :page";
$res = $db->dbh->prepare($sql);
$res->bindValue(':type3',3, PDO::PARAM_INT);
$res->bindValue(':type4',4, PDO::PARAM_INT);
$res->bindValue(':uno',1, PDO::PARAM_INT);
$res->bindValue(':lim',(int)$limit_start, PDO::PARAM_INT);
$res->bindValue(':page',(int)$page_records, PDO::PARAM_INT);
$res->execute();
$res->fetchAll(PDO::FETCH_ASSOC);
return $res;
}
$smarty->assign('results', $data->fetchAll(PDO::FETCH_ASSOC));