我的数据库中有一个 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/