1

我正在尝试将 ID 列表加载到我可以循环的 PHP 数组中。我使用的 SQL 查询在 PHPMyAdmin 中运行时返回 283 行。但是,当我运行以下 PHP 脚本时,它只返回一行(第一行)。如何修改我的代码以将生成的 SQL 查询中的所有行包含在我的 PHP 数组中?

代码:

//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);
};

谢谢,

4

3 回答 3

7

使用 mysql_fetch_array 将只返回第一行,然后推进内部计数器。您需要将其作为循环的一部分来实现,如下所示以获得您想要的。

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

请记住,mysql_ 函数现在也已被弃用,并计划在未来版本的 php 中删除。使用 mysqli_ 函数或 PDO。

于 2012-12-23T23:42:04.133 回答
4

在 PDO 中,它相当简单:

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

请参阅PDO::query文档PDOStatement::fetchAll文档

于 2012-12-23T23:48:32.230 回答
2

mysqli您一起使用mysqli_result::fetch_allPDO并使用PDOStatement::fetchAll将所有行提取到数组中。

mysqli的代码

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

与 PDO 几乎相同

$sql = "SELECT L_ListingID FROM `markers`";
$result = $pdo->query($sql);
if ($result !== false) {
    $rows = $result->fetchAll();
}
于 2012-12-23T23:50:54.533 回答