2010-02-03 28 views
3

我有一個從MySQL查詢返回一個JSON字符串以下PHP方法:MySQL查詢輸出奇數行僅

$sys_words_ref_join_query = mysql_query(" 
SELECT user_words.*, sys_words.* 
FROM user_words, sys_words 
WHERE user_words.sys_words_ref = sys_words.sys_words_ref 
& user_words.user_info_ref = '1' 
LIMIT 0, 7 
"); 

$json_array = array(); 

while($words_obj = mysql_fetch_object($sys_words_ref_join_query)) { 
$json_array[] = $words_obj; 
} 

$result = json_encode($json_array); 

echo $result; 

我遇到的問題是,$result是呼應只奇數行的DB,如。 1,3,5 ...等

任何想法爲什麼?謝謝。

回答

8

你或許應該使用在where子句中一個Logical ANDAND),而不是Bitwise AND&):

WHERE user_words.sys_words_ref = sys_words.sys_words_ref 
AND user_words.user_info_ref = '1' 
+0

哇,那解決了它,darn語法:)謝謝百萬。 – tim

0

你運行的mysql_query功能?我看不到那裏。也試着迴應一下:

print '<pre>'; 
print_r ($result); 
0

關係數據庫中的行沒有外部順序,因此沒有行號。 RDBMS可以自由使用開發者希望的任何內部命令。如果您需要訂單,則必須使用ORDER BY子句明確指定它。

1

這種情況:

user_words.sys_words_ref = sys_words.sys_words_ref & user_words.user_info_ref = 1 

意味着sys_words.sys_words_refuser_words.user_info_ref之間按位AND,稍後相比user_words.sys_words_ref

所以,你只能得到行與user_words.sys_words_ref匹配這兩個領域是之間的按位AND對於奇數行(最後一位設置)可能只是這樣。