mysqli在查询中添加了空值

时间:2015-06-15 20:21:53

标签: php mysql arrays mysqli

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

$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]索引包含的信息就是我想要的方式,但是空索引给我带来了麻烦。

3 个答案:

答案 0 :(得分:1)

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

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

print_r($myArray);

答案 1 :(得分:1)

$ myString以%结尾。 然后你用%移出字符串。因此,预期输出是具有最少两个索引的数组。

答案 2 :(得分:1)

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

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

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