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

10-14 14:55
查看更多