在PHP中获取所有ID并将它们放入一个数组中

7

如何编写一个SQL脚本来收集一个字段中所有的ID,并将它们放入一个数组中?


2
请澄清您的问题。您是要提交一个表单并希望以“数组”格式获得它吗?name[] - Jakub
你使用的是哪种数据库?你已经尝试了什么? - glomad
3个回答

9
假设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,则只需在MySQL查询的末尾添加`ORDER BY id ASC`或`ORDER BY id DESC`即可。
以上代码的作用是遍历查询返回的每一行。 `$row`是当前行的数组,它仅包含`id`,因为这是我们从数据库中选择的全部内容(`SELECT id FROM ...`)。使用`$ids_array []`将向存储ID的数组(`$ids_array`)的末尾添加一个新元素,并将来自查询中当前行的ID的值(`$row ['id']`)放入其中。
在while循环后,使用`print_r($ids_array)`查看其外观。

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数组。

0
如果你想将 sqlQuery 中的所有 ID 存入一个数组中,你可以这样做:
$query=mysql_query("SELECT * FROM table WHERE...");
while($row=mysql_fetch_assoc($query)){
   $array[]=$row['id'];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接