我正在建立一个照片上传网站,我已经将两张桌子连在一起,以便显示上传图片的人的用户名。这有效,但它打印的是数据库中的每个名称,而不仅仅是所选的图像。
使用以下查询...
调用所选图像$data = mysql_query("SELECT * FROM photos WHERE id=$imageID");
以下代码然后尝试显示用户名,但我需要它只定位$ imageID的行。我该怎么做?
<?php
$query = mysql_query("SELECT username, user_id ".
"FROM users, photos ".
"WHERE (users.id = photos.user_id)");
while($uploader = mysql_fetch_array( $query ))
{
echo $uploader['username']; }
?>
提前致谢。
答案 0 :(得分:1)
您实际上并未根据相关照片的ID缩小搜索结果范围。我想你想要一个更像这样的查询:
$data = mysql_query("SELECT u.username, p.user_id FROM users u, photos p WHERE u.id = p.user_id AND p.id = $imageID");
答案 1 :(得分:1)
<?php
$query = mysql_query("SELECT username, user_id ".
"FROM users, photos ".
"WHERE (users.id = photos.user_id and photos.id = $imageID)");
while($uploader = mysql_fetch_array( $query ))
{
echo $uploader['username']; }
?>
但这有点狡猾,因为你只是将一个变量直接替换到你的sql中,它可能受到注入攻击。您的其他查询也是如此。
您应该考虑使用参数化查询。