我的代码如下:
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
有人可以解释什么是错的吗?
答案 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中将其删除。所以我强烈建议您调查PDO
或mysqli_* prepared statements
。