我在数据库中有一个url(link)列表,可以很好地将数据回送到页面上,但我需要将该信息(我正在考虑一个数组)存储到一个变量中,以使用提供的链接执行php任务。我还没想好怎么做。
代码已经更新,我删除了对使用即将被弃用的mysql*函数的任何引用,并选择了mysql I版本。
这是我的密码
$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;
}
}
}
此代码通过一次迭代工作:它将找到存储在DB中的第一个链接,使用底部
$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 - PHP mysqli_fetch_assoc将数据存储在数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13944499/