在 PHP 中将 SQL 中的行插入到数组中


Insert rows from SQL to array in PHP

谁能告诉我为什么row[0]有数据,但row[1] row[3]undefined(空的)?

我的数据库中有 4 行有 bookid = '35'.

<?php
$mysqli = new mysqli('localhost', 'root', '', 'assignment3');
$query = "select image from images where BookId='35'";
$result = $mysqli->query($query);
$row = $result->fetch_array(MYSQLI_NUM);
echo $row[0];
echo $row[1];
echo $row[2];
echo $row[3];
?>
每次

要扩展到下一行时都需要使用fetch_array。使用数字索引 (0, 1, 2 ... n ) 仅按行中的数字检索列。

试试这个:

$row = $result->fetch_array(MYSQLI_NUM);
print_r($row); // row 1
$row = $result->fetch_array(MYSQLI_NUM);
print_r($row); // row 2
$row = $result->fetch_array(MYSQLI_NUM);
print_r($row); // row 3
$row = $result->fetch_array(MYSQLI_NUM);
print_r($row); // row 4

如果这对您有意义,您甚至可以将其抽象为for循环:

for ($i = 0; $i < 4; $i++) {
    $row = $result->fetch_array(MYSQLI_NUM);
    print_r($row);
}

使用 mysqli_fetch_all() 非常方便,因为它只需一步即可将所有行作为数组返回。但在结果集较大的情况下,它可能会消耗大量内存。

例如。

<?php
$mysqli = new mysqli('localhost', 'root', '', 'assignment3');
$query = "select image from images where BookId='35'";
$result = $mysqli->query($query);
//MYSQLI_NUM for numerical array,
//This will return both associative and numerical, if not specify any parameters.
$row = $result->mysqli_fetch_all(MYSQLI_NUM);
//this will print all rows
print_r($row);
//now it is valid to call
echo $row[0];
echo $row[1];
echo $row[2];
echo $row[3];
?>
select image from images where BookId='35'

这只返回一列,所以这就是为什么 $row[0] 工作和$row[1]

你需要这个:

SELECT * FROM images WHERE BookId = '35'