如何让SQL脚本从字段中收集所有ID并将它们放入数组中?
答案 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 ASC
或ORDER 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'];
}