Php 从b=c的表格中选择a

Php 从b=c的表格中选择a,php,mysql,Php,Mysql,mySQL错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法 我认为代码本身就说明了问题,但我不明白该如何解决这个问题。我做错了什么?我只想获取视频id(vid),其中用户id(uid)等于$loggedInUser->user\u id。你是说这样的 $video = mysql_query("SELECT vid FROM fav WHERE uid = ". $loggedInUser->user_id .""); $result

mySQL错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法


我认为代码本身就说明了问题,但我不明白该如何解决这个问题。我做错了什么?我只想获取视频id(vid),其中用户id(uid)等于$loggedInUser->user\u id。

你是说这样的

$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,";

这样,您就不需要执行两个查询来获得相同的结果。如果您也需要来自
fav
的一些值,您可以将它们添加到
选择
,就像
选项卡一样。*
(从
选项卡
中选择每一列)。

mysql\u查询
不返回字符串。它返回一个资源


检查以查看如何从查询结果中检索数据。

您必须在此处使用
mysql\u fetch\u array()
获取结果,然后分配其值

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

$records=array();
$rec=mysqli_query(“从fav中选择vid,其中uid=“.loggedInUser->user_id”);
while($row=mysqli\u fetch\u assoc($rec)){
$id=$row['vid'];
$result=mysqli_查询(“从ID=$ID的选项卡中选择*);
$records[]=mysqli_fetch_assoc($result);
}
回声';
打印(记录);

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

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

有关更多信息,请查看php手册中提供的示例:

但是请使用mysqli或PDO而不是mysql。我在这里只是讨论在PHP中使用的函数。PHP扩展mysql已被弃用,因为PHP5.5和您不应该使用的东西,您现在知道,将被删除。如果你问,为什么不推荐它:

试试这个:

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);
}

请更正你的答案<代码>加入。。。在,而不是
,其中
。还是我遗漏了什么?@CORRUPT:对不起,我错了!你完全正确。Raheel已经击败了我:)+1,因为这是OP经常询问的forthanks,但是当它不仅仅是一个结果,而是多个结果时,我如何从vid中获取行?所以vid不仅仅是一个id,而是几个不同的id。使用循环一个接一个地获取id。我将$db添加到查询中,它工作得很好。非常感谢你!
$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");    
$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);
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);
}