2015-06-10 82 views
-1

我有下面這段代碼:PHP不從我的數據庫查詢獲取的所有行

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

希望這是在2015年仍然使用'mysql_query'的衆神罷了。(不知道是否確實;當我看到它時,我從字面上停止閱讀這個問題。) – cHao

+0

那麼我們在這個問題的位置? – Rizier123

+0

當我工作的時候是深夜,我做了這個愚蠢的錯誤......一切都好。 Thnx求助。 – dantey89

回答

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

+0

另外請記住,mysql已被棄用(自PHP 5.5.0起),並且每個人都被建議使用mysqli或PDO。 – FLXN

+0

@FLXN爲OP添加了*好晚安故事*的鏈接:) – Rizier123

+1

太好了,可能是OP的夢想_improved_;) – FLXN

相關問題