【问题标题】:mysqli added empty value on querymysqli 在查询中添加了空值
【发布时间】:2015-06-15 20:21:53
【问题描述】:

我正在做一个查询,我试图拆分成这样的数组:

$sql = "SELECT *FROM questions";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$myString = $row["qID"] . "," . $row["question"] . "," . $row["answer"] . "%";
$myArray = explode('%', $myString);

print_r($myArray);
}

} else {
echo "0 results";
}
$conn->close();

但是当我打印数组时 print_r($myArray);或循环通过它我的结果如下:

Array (
    [0] => 1,Vem levde mellan 970-1022,2
    [1] =>
)
Array (
    [0] => 2,Vem levde mellan 1008-1050,3
    [1] =>
) 

为什么数组检索空值?每个数组都有 2 个索引 [0] 和 [1],但 [1] 为空。 [0] 索引包含我想要的信息,但是空索引给我带来了麻烦。

【问题讨论】:

  • 那是 NOT mysqli 做的。 mysqli 完全不在那儿。是你建立一个字符串,然后爆炸它。爆炸你自己构建的字符串有什么意义?
  • 我将它们分开以统一处理它们以进行问答游戏:)

标签: php mysql arrays mysqli


【解决方案1】:

问题是你在 char % 而不是在 char 处爆炸。 我认为你需要的是:

$myArray = array();
while($row = $result->fetch_assoc()) 
  $myArray[] = array($row["qID"],$row["question"],$row["answer"]);

print_r($myArray);

【讨论】:

    【解决方案2】:

    $myString 以 % 结尾。 然后你将字符串爆炸 %.所以预期的输出是至少有两个索引的数组。

    【讨论】:

      【解决方案3】:

      只是为了充实我上面的评论,这是 mysqli 做任何事情:

      php > $x = "a,b,c%";
      php > var_dump(explode('%', $x));
      array(2) {
        [0]=>
        string(5) "a,b,c"
        [1]=>
        string(0) ""
      }
      

      如果使用的分隔符出现在字符串的开头或结尾,则这是 explode() 的正常行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 2011-08-21
        • 1970-01-01
        • 1970-01-01
        • 2013-05-31
        相关资源
        最近更新 更多