获取所有ID并将它们放入PHP中的数组中

时间:2011-03-17 20:42:01

标签: php mysql

如何让SQL脚本从字段中收集所有ID并将它们放入数组中?

3 个答案:

答案 0 :(得分:8)

如果我们假设ID列刚刚被称为id,那么请尝试以下代码(为清晰起见,省略了DB连接代码):

$ids_array = array();

$result = mysql_query("SELECT id FROM table_name");

while($row = mysql_fetch_array($result))
{
    $ids_array[] = $row['id'];
}

如果要对ID进行升序或降序排序,只需将ORDER BY id ASCORDER BY id DESC分别添加到MySQL查询的末尾

上面的代码是迭代查询返回的每一行。 $row是当前行的数组,只包含id,因为这是我们从数据库中选择的所有内容(SELECT id FROM ...)。使用$ids_array[]会将新元素添加到您将ID存储在($ids_array)的数组末尾,并且值为$row['id'](来自当前行的ID)查询)投入其中。

在while循环之后,使用print_r($ids_array);查看它的外观。

答案 1 :(得分:1)

您在PHP中有两个选择。推荐使用PDO库。您可以使用PDO:FETCH_COLUMN提取模式。

// connect via PDO
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_EMULATE_PREPARES => false
]);

$stmt = $pdo->prepare('SELECT id FROM test1');
$stmt->execute();
$ids = $stmt->fetchAll(PDO::FETCH_COLUMN);

一种替代方法是使用mysqli。如果可以,请尽量避免使用mysqli。它更复杂,更容易出错。它没有相同的提取模式,因此您需要遍历结果并将其手动添加到数组中。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'username', 'password', 'dbname');
$mysqli->set_charset('utf8mb4'); // always set the charset

$stmt = $mysqli->prepare('SELECT id FROM test1');
$stmt->execute();
$result = $stmt->get_result();
$ids = [];
foreach ($result as $row) {
    $ids[] = $row['id'];
}

两种方法都会为您提供一维ID数组。

答案 2 :(得分:0)

如果你想将sqlQuery中的所有ID都放到一个数组中,你可以这样做:

$query=mysql_query("SELECT * FROM table WHERE...");
while($row=mysql_fetch_assoc($query)){
   $array[]=$row['id'];
}