Query为一个索引数组提供了许多元素

时间:2016-05-02 11:03:32

标签: php mysqli

我有这样的代码:

$ch = @new mysqli ($config['db']['host'],$config['db']['user'],$config['db']['password'],$config['db']['database']);
if($result = $ch->query("SELECT pid FROM posts"))
{
   while($pids = $result->fetch_assoc())
    {
        var_dump($pids);
    }

var_dump给了我:

array(1) { ["pid"]=> string(1) "1" } array(1) { ["pid"]=> string(1) "2" } array(1) { ["pid"]=> string(1) "3" } array(1) { ["pid"]=> string(1) "4" }

我有两个问题:

  1. 在数据库专栏' pid'是一个int类型,但查询产生一个字符串数组
  2. 数据库(4)中的所有记录都保存在一个数组中的一行中(只有一个索引)
  3. 因此我不能使用max(),因为它给了我所有记录(4321)。

2 个答案:

答案 0 :(得分:0)

你有4.正确检查。 var_dump()执行四次,返回一个数组(列 - 行值):

array(1) {
  ["pid"]=> string(1) "1"
}
array(1) {
  ["pid"]=> string(1) "2"
}
array(1) {
  ["pid"]=> string(1) "3"
}
array(1) {
  ["pid"]=> string(1) "4"
}

如果您希望所有内容都在一个变量中,请使用:

$allPids = array();
while (false != ($pids = $result->fetch_assoc())) {
  $allPids[] = $pids;
}
var_dump($allPids);

答案 1 :(得分:0)

您需要先将它们存储在一个array中。

while($pids = $result->fetch_assoc())
{
    $array[] = $pids;
}
var_dump($array);

对于数据类型 PHP 将相应地投射它们。