AME
AME

Reputation: 5300

Loading MySQL data into a PHP array

I am trying to load a list of IDs into a PHP array which I can loop through. The SQL query I am using returns 283 rows when I run it in PHPMyAdmin. However, when I run the following PHP script, it only returns a single row (the first row). How can I modify my code to include all the rows from the resulting SQL query in my PHP array?

Code:

//Get active listing IDs 
$active = "SELECT L_ListingID FROM `markers`";
$active = mysql_query($active) or die(mysql_error());

if(is_resource($active) and mysql_num_rows($active)>0){
$row = mysql_fetch_array($active);
print_r($row);
};

Thanks,

Upvotes: 1

Views: 3956

Answers (3)

Olaf Dietsche
Olaf Dietsche

Reputation: 74018

With mysqli you would use mysqli_result::fetch_all and with PDO there's PDOStatement::fetchAll to fetch all rows into an array.

Code for mysqli

$sql = "SELECT L_ListingID FROM `markers`";
$result = $mysqli->query($sql);
if ($result !== false) {
    $rows = $result->fetch_all();
}

with PDO it's nearly the same

$sql = "SELECT L_ListingID FROM `markers`";
$result = $pdo->query($sql);
if ($result !== false) {
    $rows = $result->fetchAll();
}

Upvotes: 2

hakre
hakre

Reputation: 197658

In PDO it's rather straight forward:

$rows = $conn->query($active)->fetchAll();

See PDO::queryDocs and PDOStatement::fetchAllDocs.

Upvotes: 4

datasage
datasage

Reputation: 19563

Using mysql_fetch_array will return only the first row and then advance the internal counter. You need to implement it as part of a loop like the following to get what you want.

while($row = mysql_fetch_array($active)) {
 // Your code here
}

Keep in mind that mysql_ functions are now also deprecated and slated to be removed in future version of php. Use mysqli_ functions or PDO.

Upvotes: 7

Related Questions