gpt4 book ai didi

PHP mysqli_fetch_assoc 将数据存储在数组中

转载 作者:行者123 更新时间:2023-11-29 02:30:32 25 4
gpt4 key购买 nike

我的数据库中有一个 url(链接)列表,可以很好地将数据回显到页面,但我需要将该信息(我想是一个数组)存储到一个变量中,而不是输出它,以执行 php 任务使用提供的链接。我还没有弄清楚如何做到这一点。

代码已更新我删除了所有关于使用即将弃用的 mysql_* 函数的引用并选择了 mysqli 版本。

这是我的代码

$query = "SELECT `Link` FROM `Table1` WHERE `Image` ='' AND `Source`='blah'";

if ($result = mysqli_query($dblink, $query)) {

while ($row = mysqli_fetch_assoc($result)) {
$link = $row['Link'];
// echo ''.$link.'<br>';
$html = file_get_html($link);
foreach ($html->find('div.article') as $e) {
$result = $e->find('img', 0);
$imgsrc = $result->src . '<br>';
echo $imgsrc;
}
}
}

此代码通过一次迭代工作:它将找到存储在数据库中的第一个链接,使用那个 $link在底部foreach()语句并输出想要的结果。在循环的第一次迭代之后,出现错误:

“mysqli_fetch_assoc() 期望参数 1 为 mysql 结果”

我想我明白为什么会出现问题 - 因为 $result 是在 while 循环之外声明的,所以它在第一次迭代/或以某种方式发生变化后永远不会再次设置。

我应该使用 mysqli_free_result()可能,如果是这样的话,我不确定它会在代码中放在哪里。

感谢您提供的任何帮助!

最佳答案

当你这样做时:

$result = mysqli_query($dblink, $query);

这些函数返回您存储在 $result 中的链接标识符。我们需要将此标识符传递给获取函数,以便能够显示要获取的结果。在您完成获取所需的所有结果之前,不应更改它。

第一次就成功了:

$row = mysqli_fetch_assoc($result)

但是,在 foreach 中,您用其他信息覆盖该变量:

$result = $e->find('img', 0);

因此,当下一次迭代到来时,它不再是有效的结果标识符,因此 MySQL 不知道如何处理它。

修复实际上很简单,您需要更改您在 foreach 中使用的变量的名称:

$result = $e->find('img', 0);
$imgsrc = $result->src . '<br>';

变成:

$found= $e->find('img', 0);
$imgsrc = $found->src . '<br>';

瞧,它应该可以工作...

关于PHP mysqli_fetch_assoc 将数据存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944499/

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