根据我所读到的,当在我的表上执行以下sql命令和fetchAll()时,该表有6行11列:
$sql = "SELECT 1 FROM table";
$sqlPrepared = $conn->prepare($sql)
$sqlPrepared->execute()
$result = $sqlPrepared->fetchAll();
$print_r($result);
我应该得到6行,每行只有一个值,每个值中的值为1。然而,我得到了6行,每行中有两个值,每个值中的值为1:
Array (
[0] => Array (
[1] => 1
[2] => 1 )
[1] => Array (
[1] => 1
[2] => 1 )
[2] => Array (
[1] => 1
[2] => 1 )
[3] => Array (
[1] => 1
[2] => 1 )
[4] => Array (
[1] => 1
[2] => 1 )
[5] => Array (
[1] => 1
[2] => 1 )
)
问题1:为什么我为每个数组得到2个值而不是1个?
问题2:内部数组不是
Array (
[1] => 1 ...
为什么不从[0]开始?:
Array (
[0] => 1 ...
如果您没有在->fetchAll()
方法上提供任何标志,这包括多维数组行上的关联索引和数字索引。
因此,当您使用SELECT 1 FROM
时,关联索引是1
(意思是列名是1
),并且由于数组键是唯一的,因此数字索引会进行调整,具有值对的数字索引会分配给2
。