Php 如何仅显示一个结果
我有一个脚本,可以根据标题的第一个字母检索结果。我有链接A-Z,你可以点击,它会显示所有的结果,从该字母开始。我的问题是,我试图显示来自表1的数据,并显示该结果的图像。如果表2中存在图像,则它将仅显示来自表1的结果数据 我的脚本似乎工作正常,但如果表2中存在多个与表1中的link_id匹配的图像,那么它将多次显示结果。 我试图找出一种方法,从表2中只提取1个图像,即使存在更多与表1中的link_id相等的图像。我在表2中创建了一个名为default_image的列,每个具有多个图像的link_id都将其中一个图像设置为默认值1,而所有其他图像都设置为0 如何显示只有默认图像或根本没有图像的结果“意味着如果表2中没有图像链接到表1中的链接id,那么表1中的结果文本仍将显示” 这就是我正在做的Php 如何仅显示一个结果,php,mysql,Php,Mysql,我有一个脚本,可以根据标题的第一个字母检索结果。我有链接A-Z,你可以点击,它会显示所有的结果,从该字母开始。我的问题是,我试图显示来自表1的数据,并显示该结果的图像。如果表2中存在图像,则它将仅显示来自表1的结果数据 我的脚本似乎工作正常,但如果表2中存在多个与表1中的link_id匹配的图像,那么它将多次显示结果。 我试图找出一种方法,从表2中只提取1个图像,即使存在更多与表1中的link_id相等的图像。我在表2中创建了一个名为default_image的列,每个具有多个图像的link_i
$letter = $_GET['letter'];
$sql = "
select
s.link_id,
s.title,
i.media_id,
i.link_id,
i.media_link,
i.title
from table1 as s
LEFT JOIN images as i on (i.link_id = s.link_id)
where s.title like '$letter%'
and s.def = i.title";
$result = mysql_query($sql) or die($CONF['debug']?("ERROR: mysql query failed: ".mysql_error()):"ERROR: Please try later");
while($row = mysql_fetch_array($result)){
$letter = $_GET['letter'];
//echoing all data here
}
只是想尽量弄清楚。我基本上是试图查询数据库,如果存在任何图像,则显示table1数据和table2“images”数据,如果不只是显示table1数据,并确保如果存在多个图像,则仅显示默认图像
有人知道该怎么做吗?
谢谢
编辑:
固定使用分组方式。感谢您曾经建议并删除了他们的评论。我完全忘记了分组依据。使用此查询:
select
s.link_id,
s.title,
i.media_id,
i.link_id,
i.media_link,
i.title
from table1 as s
LEFT JOIN images as i on (i.link_id = s.link_id)
where s.title like '$letter%'
and s.def = i.title
order by i.default_image DESC
limit 1
您只需在默认情况下对图像字段进行降序排序(因此非空行将位于顶部),并将查询限制为1,这样您就可以只获取第一行(如果有多行)。您的脚本会受到SQL注入攻击。在未事先确认使用安全之前,不要使用来自$\u GET或$\u POST的数据。使用mysql\u real\u escape\u字符串或了解准备好的语句。感谢他提醒我,但我知道这一点。我只是想让它在本地主机上工作。如果我将其用于生产,我将确保验证所有内容。