出于某种原因,当我通过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)
我打破了我的头!
您的查询生成,cartesian product因为您没有提供两个表之间的关系:bookmarks和users,
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您可以摆脱使用值周围的单引号.
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |