从表WHERE b = c中选择a

时间:2013-04-25 07:06:10

标签: php mysql

$video = mysql_query("SELECT vid FROM fav WHERE uid = ". $loggedInUser->user_id ."");
$result = mysql_query("SELECT * FROM tab WHERE ID = ". $video .""); 
if (!$result)
die("mySQL error: ". mysql_error());
while($row = mysql_fetch_object($result));
echo ",$row->ID,";
  

mySQL错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法

我认为代码不言自明,但我不明白,如何解决这个问题。我做错了什么?我只想获取用户ID(uid)等于$ loggedInUser-> user_id的视频ID(vid)。

6 个答案:

答案 0 :(得分:4)

你的意思是这样的吗?

SELECT tab.* FROM tab JOIN fav ON tab.ID = fav.vid AND fav.uid = ###

这样您就不需要执行两个查询来获得相同的结果。如果您还需要fav中的某些值,则可以将其添加到SELECT,就像tab.*一样(选择tab中的每一列)。

答案 1 :(得分:1)

mysql_query不会返回字符串。它返回一个资源。

检查PHP-MySQL doc以了解如何从查询结果中检索数据。

答案 2 :(得分:1)

$rec    = mysqli_query("SELECT vid FROM fav WHERE uid = ". $loggedInUser->user_id);  
$video  =   mysqli_fetch_assoc($rec);       
$id =   $video['vid'];      
$result = mysqli_query("SELECT * FROM tab WHERE ID = $id");    

EDITS

$records    =   array();
$rec    = mysqli_query("SELECT vid FROM fav WHERE uid = ". $loggedInUser->user_id);  

while($row = mysqli_fetch_assoc($rec)){
    $id =   $row['vid'];      
    $result = mysqli_query("SELECT * FROM tab WHERE ID = $id");  
    $records[]  =   mysqli_fetch_assoc($result);
}

echo '<pre>';
print_r($records);

答案 3 :(得分:0)

您必须在此处使用mysql_fetch_array()获取结果,然后分配其值

$arr= '';
$video = mysql_query("SELECT vid FROM fav WHERE uid = ". $loggedInUser->user_id ."");
while($row = mysql_fetch_array($video)) {
    $arr = $row['vid'];
}
$result = mysql_query("SELECT * FROM tab WHERE ID = ". $arr .""); 

答案 4 :(得分:0)

试试这个:

function getQueryData($sQuery)
{
    $result = mysql_query($sQuery); 
    $rows = Array();
    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
       $rows[] = $row;
    }
    @mysql_free_result($result);    
    return $rows;
}
$video = getQueryData("SELECT vid FROM fav WHERE uid = ". $loggedInUser->user_id ."");
if(!empty($video)) {
   $result = getQueryData("SELECT * FROM tab WHERE ID = ". $video[0]['vid'] .""); 
   print_r($result);
}

答案 5 :(得分:-1)

我能给出的唯一答案是RTM :)但我会向你解释一下:

方法mysql_query()返回一个资源。资源不是字符串,整数或数组。但是您可以从资源中获取所需的所有数据。例如,您可以获取行数(mysql_num_rows())或查询选择的数据(mysql_fetch_assoc()将其作为关联数组返回。)

有关详细信息,请查看php-manual中提供的示例:http://www.php.net/manual/en/function.mysql-fetch-assoc.php

但请使用mysqli或PDO而不是mysql。我在这里只是谈论你在PHP中使用的函数。从PHP 5.5开始,不推荐使用PHP扩展mysql,你不应该使用现在已经知道的东西。如果你问,为什么它被弃用:http://de2.php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated