PHP MySQL从两个表循环SELECT?

时间:2013-11-07 18:48:39

标签: php mysql

您好我正在处理从两个表中选择列的PHP代码。

这是我的代码:

$result2  = mysql_query("SELECT  * 
                         FROM   `videos`, `m_subedvids` 
                         WHERE  `videos.approved`='yes' AND 
                                `videos.user_id`='$subedFOR' 
                         ORDER BY `videos.indexer`
                         DESC LIMIT $newVID");

while($row2 = mysql_fetch_array($result2))
{
    $indexer   = addslashes($row2['videos.indexer']);
    $title_seo = addslashes($row2['videos.title_seo']);
    $video_id  = addslashes($row2['videos.video_id']);
    $title     = addslashes($row2['videos.title']);
    $number_of_views = addslashes($row2['videos.number_of_views']);
    $video_length    = addslashes($row2['videos.video_length']);
}

当我尝试使用$indexer打印echo $indexer;时,它没有给我任何结果。 我在这段代码中的错误在哪里?

2 个答案:

答案 0 :(得分:2)

在我看来,关键'indexer'不在您的搜索结果中。这很难说,因为你没有列出你的表的定义而你正在使用SELECT *,所以我们看不到这些名字。

这使得程序以后更容易阅读,如果不是SELECT *...,则使用SELECT col1, col2, ...。是的,SELECT *现在可以为您节省一些打字,但是当您或其他任何处理您的代码的人必须在每次使用该行代码时检查表定义时,您将失去那段时间。< / p>

因此,请尝试更改查询以显式选择您使用的列。如果它是一个无效的列,你会立即得到一个错误,而不是你现在得到的这个沉默的失败,你也会在以后感谢自己。

答案 1 :(得分:0)

只要videos.indexer是查询中使用的所有表中的唯一字段名称,就可以更改

$indexer = addslashes($row2['videos.indexer']);

$indexer = addslashes($row2['indexer']);

在引用结果时,您不需要(或不能)使用表名。