0

谁能告诉我为什么有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];
?>
4

3 回答 3

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);
}
于 2012-08-10T16:05:03.017 回答
0

使用起来非常方便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];
?>
于 2012-08-10T17:12:34.433 回答
0
select image from images where BookId='35'

这只返回一列,这就是为什么 $row[0] 有效而 $row[1]

你需要这个:

SELECT * FROM images WHERE BookId = '35'
于 2012-08-10T18:03:12.003 回答