PHP无法从我的数据库查询

时间:2015-06-10 20:19:17

标签: php mysql phpmyadmin

我的代码如下:

if(isset($_POST['period'])){
    $query_str = "SELECT `id` FROM `orders` WHERE `status` = 'Send' AND `date` BETWEEN '".date('Y-m-d H:i:s', time()-$_POST['period'])."'  AND  '".date('Y-m-d H:i:s', time())."'  ";
    echo $query_str;
    $query = mysql_query($query_str) or die(mysql_error());
    $arr = mysql_fetch_assoc($query);
    var_dump($arr);

}

结果我有这两个字符串:

// this value of $query_str
SELECT `id` FROM `orders` WHERE `status` = 'Send' AND `date` BETWEEN '2015-06-04 03:11:08'  AND  '2015-06-11 03:11:08' 

// var_dump of my $arr
array(1) {
  ["id"]=>
  string(2) "25"
} 

这个结果是错误的,但是当我复制$uqery_str值并将其放入phpMyAdmin时,我有3个结果。

25,26,27 // this is right

有人可以解释什么是错的吗?

1 个答案:

答案 0 :(得分:3)

那是因为你只获取第一行。将您的fetch调用放入while循环以获取所有行,例如

$arr = mysql_fetch_assoc($query);
var_dump($arr);

为:

while($arr = mysql_fetch_assoc($query)) {
    var_dump($arr);
}

$query是一个资源,您可以从资源中逐行获取mysql_fetch_assoc()。从手册开始:

  

返回与获取的行对应的关联数组,并向前移动内部数据指针

此外,由于我们在这里,我今天为您提供晚安故事

不推荐使用

mysql_*,并在新版本的PHP中将其删除。所以我强烈建议您调查PDOmysqli_* prepared statements