-3
$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)。

4

6 回答 6

4

你的意思是这样的?

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

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

于 2013-04-25T07:08:49.017 回答
1

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

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

于 2013-04-25T07:08:49.187 回答
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");    

编辑

$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);
于 2013-04-25T07:10:09.317 回答
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 .""); 
于 2013-04-25T07:09:44.807 回答
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);
}
于 2013-04-25T07:15:55.773 回答
-1

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

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

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

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

于 2013-04-25T07:14:49.693 回答