-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 回答