出於某種原因,當我通過PHP運行此查詢時,它返回8行,實際上我的數據庫中只有2行,而當我通過phpmyadmin運行它時,顯然返回2。PHP重複查詢結果?
$sql = "SELECT url FROM bookmarks,users WHERE bookmarks.user_id = {$session->user_id}";
$resultado = $db->query($sql);
echo mysql_num_rows($resultado);
我很傷腦筋!
出於某種原因,當我通過PHP運行此查詢時,它返回8行,實際上我的數據庫中只有2行,而當我通過phpmyadmin運行它時,顯然返回2。PHP重複查詢結果?
$sql = "SELECT url FROM bookmarks,users WHERE bookmarks.user_id = {$session->user_id}";
$resultado = $db->query($sql);
echo mysql_num_rows($resultado);
我很傷腦筋!
您的查詢產生cartesian product
因爲你沒有提供的兩個表之間的關係:bookmarks
和users
,
SELECT url
FROM bookmarks
INNER JOIN users
ON bookmarks.COLNAME = users.COLNAME
WHERE bookmarks.user_id = '$session->user_id'
其中COLNAME
是定義表中如何相互關聯,或如何列表格應該被鏈接。
爲了進一步獲得更多的知識有關加入,請訪問以下鏈接:
一點題外話,查詢與SQL Injection
脆弱的,如果值(小號)變量來自外部。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements
你可以擺脫使用單引號圍繞值。
由於JW指出的那樣,你是生產笛卡爾產品 - 你是不是對用戶加入的書籤。這就是你複製行的原因。
雖這麼說,你並不需要加入的用戶都在上面的查詢:
"SELECT url FROM bookmarks WHERE bookmarks.user_id = {$session->user_id}"
好運。
謝謝我的朋友,主要不是因爲答案,而是你打開了一個充滿知識的新門 – 2013-02-15 05:36:37
不用客氣':D' – 2013-02-15 05:38:30