PHP重复查询结果?

Sol*_*ose 0 php sql

出于某种原因,当我通过PHP运行此查询时,它返回8行,而实际上我的数据库中只有2行,当我通过phpmyadmin运行它时,它显然返回2.

 $sql = "SELECT url FROM bookmarks,users WHERE bookmarks.user_id = {$session->user_id}";
 $resultado = $db->query($sql);

 echo mysql_num_rows($resultado);
Run Code Online (Sandbox Code Playgroud)

我打破了我的头!

Joh*_*Woo 7

您的查询生成,cartesian product因为您没有提供两个表之间的关系:bookmarksusers,

SELECT url 
FROM   bookmarks 
       INNER JOIN users 
          ON bookmarks.COLNAME = users.COLNAME
WHERE  bookmarks.user_id = '$session->user_id'
Run Code Online (Sandbox Code Playgroud)

哪个COLNAME列定义了表彼此之间的关系,或者表的链接方式.

要进一步了解联接,请访问以下链接:

作为一个旁注,查询是脆弱的SQL Injection,如果值(小号变量)从外面走了进来.请查看下面的文章,了解如何防止它.通过使用,PreparedStatements您可以摆脱使用值周围的单引号.