Php 无法回显查询的结果
我有一个类,其中我有一个带有以下查询的函数Php 无法回显查询的结果,php,sql,class,function,pdo,Php,Sql,Class,Function,Pdo,我有一个类,其中我有一个带有以下查询的函数 public function count_weight() { $id = $_SESSION['id']; $query = $this->db->prepare("SELECT sum( weight ) FROM `fish` WHERE `user_id` = '".$_SESSION['id']."'"); try { $query->execute(); } catch(
public function count_weight() {
$id = $_SESSION['id'];
$query = $this->db->prepare("SELECT sum( weight ) FROM `fish` WHERE `user_id` = '".$_SESSION['id']."'");
try {
$query->execute();
} catch(PDOException $e) {
die($e->getMessage());
}
return $query->fetchAll();
}
我想在我的索引页上重复这个结果。现在看起来是这样的:
$weight=$users->count_weight()
回声$weight
这显然不起作用,它只打印“arraykg”
有什么建议吗?你不能打印那样的数组。e、 g
$arr = array(1,2,3);
echo $arr;
将输出文本数组
,因为您正在字符串上下文中使用数组。如果要打印数组的内容,需要对其执行一些操作,例如:
echo implode(',', $arr); // prints: 1,2,3
echo "<pre>";
print_r($weight);
echo "</pre>";
或
请尝试以下示例:
$weight = $users->count_weight();
foreach($weight as $w)
{
echo($w['id']):
}
$query->fetchAll()代码>将返回一个数组。使用var\u dump()
分析数组并相应调整变量声明 echo”“;
打印(重量);
回声“;
假设$weight
实际包含数据且不是资源。$weight是它检索到的行的数组。你需要呼应一下那篇专栏文章
$query = $this->db->prepare("SELECT sum( weight ) AS weight FROM `fish` WHERE `user_id` = '".$_SESSION['id']."'");
由于查询的原因,这可能有效,也可能无效。尝试将查询更改为:
您需要使用foreach
对结果进行迭代。或者,由于您的查询看起来应该只返回一行和一列,而不是执行fetchAll
dofetchColumn
为什么不使用参数为?Mike-谢谢!fetchColumn做到了这一点。@CheesePuffs您真的应该为prepared语句使用绑定参数,以实现适当的安全性/SQL注入预防。您还应该查看stmt::bind_param
和stmt::bind_result
Daryl Gill-谢谢您的提示!我边走边学,能举个例子吗?:)实际上,使用fetchAll
生成所有行的零索引数组,因此实际上需要执行$weight[0]['weight']
,因为它返回所有行。如果您使用的是fetch
,它将只返回一行,而fetchColumn
只返回一行中的一列。这是为了检查数组是否正确填充,并且应该(主要)用作调试步骤,这不会从数组中回显元素,而是整个数组
echo $weight['weight'];
$query = $this->db->prepare("SELECT sum( weight ) AS weight FROM `fish` WHERE `user_id` = '".$_SESSION['id']."'");