我正在建立一个照片上传网站,为了显示上传图像的人的用户名,我将两个表连接在一起。这是有效的,但它打印数据库中的每个名称,而不仅仅是所选的图像。
使用以下查询调用所选图像。。。
$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']; }
?>
提前谢谢。
<?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中,它可能会受到注入攻击。其他查询也是如此。
您可能应该考虑使用参数化查询。
您实际上并没有根据有问题的照片的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");