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()を使用すると、すべての行が 1 つのステップで配列として返されるため、非常に便利です。ただし、結果セットが大きい場合は、多くのメモリを消費する可能性があります。

例えば。

<?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'

これは 1 つの列のみを返すため、$row[0] が機能し、$row[1] が機能するのはこのためです。

あなたはこれを必要とします:

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