SQL查询,如何分开呢?

时间:2014-10-23 15:00:43

标签: php mysql sql database mysqli

$query = 'SELECT newsvid.id, ......  videoinformation.imgShot3, videomain.vidMUrl FROM newsvid, videomain, videoinformation  WHERE newsvid.id = ' . $video_id . 'videoinformation.id =' . $video_id . ' newsvid.id = ' . $video_id;

问题是没有想法如何使这一点工作:

WHERE newsvid.id = ' . $video_id . 'videoinformation.id =' . $video_id . ' newsvid.id = ' . $video_id;

主要问题是此后

WHERE newsvid.id = ' . $video_id

没有什么工作,所以它是新闻vid.id = 1但这一点

. 'videoinformation.id =' . $video_id . ' newsvid.id = ' . $video_id;

不被识别为查询....换句话说,这一位不是sql查询的一部分。

目前SQL查询只了解例如newsvid.id等于1,我需要这个查询才能理解videoinformation.id和videomain.id等于1(video_id)

最后这是有效的:

$query = 'SELECT newsvid.id, videoinformation.id, videomain.id, newsvid.vidTitle, newsvid.imgCover, videoinformation.vidLD, videoinformation.vidYear, videoinformation.vidCity, videoinformation.vidZanr, videoinformation.vidQUality, videoinformation.vidTranslated, videoinformation.vidMaker, videoinformation.vidRoles, videoinformation.vidTime, videoinformation.imgShot1, videoinformation.imgShot2, videoinformation.imgShot3, videomain.vidMUrl FROM newsvid, videomain, videoinformation  WHERE newsvid.id = 1 AND videoinformation.id = 1 AND videomain.id = 1;

“1”的内容我需要$ video_id。

因为我有php <?php $video_id = $_GET['id']; ?>

为我帮助

SELECT newsvid.id, videoinformation.id, videomain.id, newsvid.vidTitle, newsvid.imgCover, videoinformation.vidLD, videoinformation.vidYear, videoinformation.vidCity, videoinformation.vidZanr, videoinformation.vidQUality, videoinformation.vidTranslated, videoinformation.vidMaker, videoinformation.vidRoles, videoinformation.vidTime, videoinformation.imgShot1, videoinformation.imgShot2, videoinformation.imgShot3, videomain.vidMUrl FROM newsvid, videomain, videoinformation WHERE newsvid.id = videoinformation.id AND newsvid.id = videomain.id AND newsvid.id = '. $video_id ;

2 个答案:

答案 0 :(得分:0)

试试这个:

$query = "SELECT newsvid.id, ......  videoinformation.imgShot3, videomain.vidMUrl 
          FROM newsvid, videomain, videoinformation  
          WHERE newsvid.id = " . $video_id . " AND videoinformation.id =" . $video_id . "                
          AND newsvid.id = " . $video_id;

OR版本:

$query = "SELECT newsvid.id, ......  videoinformation.imgShot3, videomain.vidMUrl 
          FROM newsvid, videomain, videoinformation  
          WHERE newsvid.id = " . $video_id . " OR videoinformation.id =" . $video_id .  "                
          OR newsvid.id = " . $video_id;

并告诉我们是否有人帮助过你。

如果仍然无效,请转储$ query并在phpmyadmin(或您正在使用的任何界面)中手动尝试并在此处粘贴错误。

P.S 小心每个表格中的栏目是否被命名!!!

L.E:这是您的查询

SELECT newsvid.id, videoinformation.id, videomain.id, newsvid.vidTitle, 
newsvid.imgCover, videoinformation.vidLD, videoinformation.vidYear, videoinformation.vidCity, videoinformation.vidZanr, videoinformation.vidQUality, videoinformation.vidTranslated, videoinformation.vidMaker, videoinformation.vidRoles, videoinformation.vidTime, videoinformation.imgShot1, videoinformation.imgShot2, videoinformation.imgShot3, videomain.vidMUrl 
FROM newsvid, videomain, videoinformation 
WHERE newsvid.id = 1 AND videoinformation.id = 1 AND videomain.id = 1;

您正在尝试从多个表中选择值,为此,您需要join(单击以获取更多详细信息)。

所以你的查询应该是:

SELECT ... 
FROM newsvid as nw
JOIN videomain as vm ON nw.id = vm.id
JOIN videoinformation as vi ON vi.id = vm.id
WHERE nw.id = video_id ;
PHP中的

$query = "SELECT ... 
FROM newsvid as nw
JOIN videomain as vm ON nw.id = vm.id
JOIN videoinformation as vi ON vi.id = vm.id
WHERE nw.id = ". $video_id ;

其中nw,vm和vi是表的别名,video_id是我认为是视频域中PK的FK。如果没有,请使用适当的值重写查询。

答案 1 :(得分:0)

您需要加入表格。使用双引号。变量没问题。使用内连接,如:

"SELECT newsvid.id, videoinformation.id, videomain.id, newsvid.vidTitle, newsvid.imgCover, videoinformation.vidLD, videoinformation.vidYear, videoinformation.vidCity, videoinformation.vidZanr, videoinformation.vidQUality, videoinformation.vidTranslated, videoinformation.vidMaker, videoinformation.vidRoles, videoinformation.vidTime, videoinformation.imgShot1, videoinformation.imgShot2, videoinformation.imgShot3, videomain.vidMUrl 
FROM newsvid
INNER JOIN videomain
ON newsvid.id = videomain.id
INNER JOIN videoinformation
ON newsvid.id = videoinformation.id
WHERE newsvid.id = $video_is";