我有以下PHP方法从MySQL查询返回JSON字符串:
$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 ......等等。
知道为什么吗?感谢。
答案 0 :(得分:8)
你应该在where子句中使用Logical AND(AND
)而不是Bitwise AND(&
):
WHERE user_words.sys_words_ref = sys_words.sys_words_ref
AND user_words.user_info_ref = '1'
答案 1 :(得分:1)
这个条件:
user_words.sys_words_ref = sys_words.sys_words_ref & user_words.user_info_ref = 1
隐含AND
和sys_words.sys_words_ref
之间的按位user_words.user_info_ref
,后来与user_words.sys_words_ref
进行比较
因此,您只获得user_words.sys_words_ref
与这两个字段之间的按位AND
匹配的行,这些行可能仅适用于奇数行(最后一位设置)。
答案 2 :(得分:0)
您是否运行了 mysql_query 功能?我看不到那里。也试着回应一下:
print '<pre>';
print_r ($result);
答案 3 :(得分:0)
关系数据库中的行没有外部排序,因此没有行号。 RDBMS可以自由使用开发人员希望的任何内部排序。如果您需要订单,则必须使用ORDER BY
子句明确指定它。