I have a list of url’s(link) in my database and can echo the data to the page fine but instead of outputting it, I need to store that info(I was thinking an array) into a variable to perform php tasks using the provided links. I have yet to figure out how to do this.
The code has been updated I removed any references to using the soon to be deprecated mysql_* functions and opted for the mysqli version.
Heres my code
$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;
}
}
}
This code is working through one iteration: It will find the first link stored in the DB, use that $link in the bottom foreach() statement and output the desired result. After the first iteration of the loop, an error occurs stating:
“mysqli_fetch_assoc() expects parameter 1 to be a mysql result”
I think I understand why the problem is occurring – Since the $result is declared outside of the while loop, it is never set again after the first iteration/or changes in some way.
or
I should be using mysqli_free_result() possibly, If that were the case I am not sure where it would go in the code.
Thanks for any help you can offer!
When you do this:
The functions return a link identifier you store in
$result. This identifier we need to pass to fetch functions in order to be able to show it from which result to fetch. It shouldn’t be changed until you are done fetching all the results you want.This goes right the first time:
But then, in the foreach, you overwrite that variable with other information:
As such, when the next iteration comes around, it is no longer a valid result identifier, so MySQL doesn’t know what to do with it.
The fix is actually rather simple, you need to change the name of the variable you are using in the foreach:
Becomes:
And voila, it should work…