PHP mysqli_fetch_assoc 将数据存储在数组中

标签 php mysql arrays simple-html-dom

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

相关文章:

php - curl 错误 60 : SSL certificate: unable to get local issuer certificate - DigiCert

php - MySQL BETWEEN 和 ">= AND <="给出不同的结果

php - 使用递归函数在列表中将 SQL 帖子相互分组

mysql - 选择并计算行数

javascript - 如何在数组上使用 .filter() 仅删除 'NaN' 而不是字符串和数字?

c++ - 数组声明之间的区别

php - CodeIgniter - 如何删除 url 路由中的类名

mysql - 显示日期和时间差异的下一行

MySQL:将多个文件加载到一个表中

java - 如何从servlet中的http请求获取对象?