gpt4 book ai didi

php - MySQLI 准备语句 : num_rows & fetch_assoc

转载 作者:可可西里 更新时间:2023-11-01 13:13:17 28 4
gpt4 key购买 nike

下面是一些写得不好且被严重误解的 PHP 代码,没有错误检查。老实说,我在 PHP->MySQLi 函数的迷宫中有点挣扎!有人可以提供一个示例,说明如何使用准备好的语句在关联数组中收集结果,同时还从 $stmt 获取行数吗?下面的代码是我正在玩的。我认为让我失望的一点是在 store_result 之后使用 $stmt 值,然后尝试收集一个 assoc 数组,我不太确定为什么...

$mysqli = mysqli_connect($config['host'], $config['user'], $config['pass'], $config['db']);
$stmt = $mysqli->prepare("SELECT * FROM licences WHERE generated = ?");
$stmt->bind_param('i', $core['id']);
$result = $stmt->execute();
$stmt->store_result();

if ($stmt->num_rows >= "1") {

while($data = $result->fetch_assoc()){
//Loop through results here $data[]
}

}else{

echo "0 records found";

}

我觉得只要求代码有点厚颜无耻,但它是对我的情况的有效演示,我觉得我需要最终了解实际发生的事情。一百万!

最佳答案

我搜索了很长时间,但从未找到正确响应所需的文档,但我进行了研究。

$stmt->get_result() 为此替换了 $stmt->store_result()。所以,如果我们看到

$stmt_result = $stmt->get_result();
var_dump($stmt_result);

我们得到

object(mysqli_result)[3]
public 'current_field' => int 0
public 'field_count' => int 10
public 'lengths' => null
public 'num_rows' => int 8 #That we need!
public 'type' => int 0

因此我提出以下通用解决方案。 (我包括我使用的错误报告)

#Prepare stmt or reports errors
($stmt = $mysqli->prepare($query)) or trigger_error($mysqli->error, E_USER_ERROR);

#Execute stmt or reports errors
$stmt->execute() or trigger_error($stmt->error, E_USER_ERROR);

#Save data or reports errors
($stmt_result = $stmt->get_result()) or trigger_error($stmt->error, E_USER_ERROR);

#Check if are rows in query
if ($stmt_result->num_rows>0) {

# Save in $row_data[] all columns of query
while($row_data = $stmt_result->fetch_assoc()) {
# Action to do
echo $row_data['my_db_column_name_or_ALIAS'];
}

} else {
# No data actions
echo 'No data here :(';
}
$stmt->close();

关于php - MySQLI 准备语句 : num_rows & fetch_assoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898994/

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