【问题标题】:php mysql fetch two table [closed]php mysql获取两个表[关闭]
【发布时间】:2015-07-04 03:15:02
【问题描述】:

我有两个来自 mysql 的表。

1、照片(url_link)

2、视频(url_link)

如果两个表都不为空,我只想获取 1 个表(视频网址).. 有吗?我正在使用以下代码:

<--photo -->
    <?php       
$query_img = mysql_query("SELECT `url` FROM `photos_news` WHERE title='{$thumn_content['titles']}' LIMIT 0,1");
while($img = mysql_fetch_array($query_img)){ ?>
<img src="<?php echo $img['url'];?>" class="img-responsive img-rounded"/>
<?php }?>


<!-- vdo -->
<?php
$query_vdo = mysql_query("SELECT `url` FROM `video_news` WHERE title='{$thumn_content['titles']}' LIMIT 0,1");
while($vdo = mysql_fetch_array($query_vdo)){ ?>
<div class="embed-responsive embed-responsive-16by9">
  <iframe class="embed-responsive-item" src="<?php echo $vdo['url']?>?modestbranding=1&showinfo=0&fs=0"></iframe>
</div>

<?php }?>

谢谢楼主,

【问题讨论】:

  • 用mysql的IS NULL查空

标签: php mysql while-loop fetch


【解决方案1】:

您可以像以前一样先获取照片和视频,但要在编写 HTML 之前。例如,您可以将结果放入 $photos 和 $videos 数组中。

然后您可以检查两个变量是否都有结果,如果是则只为视频编写 HTML。

<?php // part 1: collect the data

$resource = mysql_query("SELECT `url` FROM `photos_news` WHERE title='{$thumn_content['titles']}' LIMIT 0,1");
$photos = array();

while($row = mysql_fetch_array($resource)) {

   $photos[] = $row;

}

$resource  = mysql_query("SELECT `url` FROM `video_news` WHERE title='{$thumn_content['titles']}' LIMIT 0,1");
$videos = array();

while($row = mysql_fetch_array($resource)) {

   $videos[] = $row;

}

// medias contains only $videos if both tables has entries.
$medias = $photos & $videos ? $videos : array_merge($photos, $videos);

?>
<?php // part 2: display the data ?>
<?php foreach($medias as $media) : ?>
   <img src="<?php echo $media['url'] ?>" class="img-responsive img-rounded"/>
<?php endforeach ?>

【讨论】:

  • 先生,可以给我看看吗?
  • 并清理了一下以删除重复的代码。
  • 哇,效果很好。谢谢你先生..
【解决方案2】:

您可以使用外键并在两个表之间加入:)
您还应该检查 PDO 以避免代码中的 sql 注入。

如果您告诉我们您的桌子是如何设计的,我们可以为您提供更多帮助

TABLE video_news
idVideo
urlVideo
titleVideo

TABLE photo_news
idPhoto
urlPhoto
titlePhoto
idVideo = FOREIGN KEY

所以你得到 urlVideo 的声明会是这样的

SELECT urlVideo
FROM video_news vn, photo_news pn
WHERE vn.idVideo = pn.idVideo

这样,如果没有对应视频的照片,则不会获取它

【讨论】:

  • photos_news ==== > (id, url, title) video_news ===> (id, url, title)
  • photo_news 是否属于 video_news ?如果是,你应该像这样创建你的表格(我编辑我的帖子)
  • 对不起先生,我还有一张表是主表,TABLE post id, title, news TABLE photos_news id, url, title, TABLE post id, title, news TABLE vdo_news id url title
  • 我可以使用下面的代码SELECT urlVideo FROM video_news vn, photo_news pn WHERE vn.idVideo = pn.idVideo and title='{$thumn_content['titles']}'
  • 是的,只需在更改数据库后将“title”更改为“titlePhoto”或“titleVideo”,但您应该检查是否将 PDO 用于您的语句,否则您很容易受到 sql 注入的影响
猜你喜欢
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
相关资源
最近更新 更多