-1

出力結果がこのようになる理由を説明できますか? 配列が含まれている理由を知りたいです。プログラムに配列ワードがありません。どうしてそうなった?どうすれば「1」だけを出力できますか。

コード:

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
!$mysqli->query("CREATE TABLE test(id INT)") ||
!$mysqli->query("INSERT INTO test(id) VALUES (1)")) {
echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
!$mysqli->query('CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id FROM test; SELECT id + 1 FROM test; END;')) {
echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$mysqli->multi_query("CALL p()")) {
echo "CALL failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

do {
if ($res = $mysqli->store_result()) {
    printf("---\n");
    var_dump($res->fetch_all());
    $res->free();
} else {
    if ($mysqli->errno) {
        echo "Store failed: (" . $mysqli->errno . ") " . $mysqli->error;
    }
}
} while ($mysqli->more_results() && $mysqli->next_result());
?>

結果:

---
array(3) {
[0]=>
 array(1) {
[0]=>
string(1) "1"
}
}

とにかく他の出力を削除しましたが、配列が含まれている理由だけを知りたいだけです。

4

2 に答える 2

0

ドキュメントに従って注意してください-のリターンタイプmysqli_result::fetch_all

http://php.net/manual/en/mysqli-result.fetch-all.php#refsect1-mysqli-result.fetch-all-returnvalues

于 2013-03-09T06:47:31.347 に答える
0

mysqliのfetch_allは配列を返します。http://www.php.net/manual/en/mysqli-result.fetch-all.phpのドキュメントから、戻り値が「結果行を保持する連想配列または数値配列の配列を返す」であることがわかります。したがって、配列を取得します。あなたが持っているのは、値が「1」の1つの値(配列内)を持つ1つの行(配列として)です。

于 2013-03-09T06:48:14.810 に答える