在另一个查询中使用查询中的值

时间:2013-11-26 14:42:15

标签: php mysql

我有一个查询

 $result = mysql_query("SELECT * FROM comprofiler WHERE cb_playstationgames LIKE '%FIFA%' ORDER BY id ASC");

在该查询中有一个user_id,我需要在另一个表上执行查询。

$gebruikerid = mysql_query("SELECT * FROM users where id LIKE '".$result['user_id']."'");

现在我想在while循环中使用该值

echo "<table><tr><th width=\"300\" align=\"left\" >Avatar</th><th width=\"300\" align=\"left\">Naam</th><th width=\"200\" align=\"left\">PSN Naam</th></tr>"; 

while($row2 = mysql_fetch_array($result))
{
 echo "<tr><td><img height=\"50\" width=\"50\" src=\"/images/comprofiler/" . $row2['avatar'] . "\"></td><td>" . $gebruikernaam . "</td><td>" .     $row2['cb_psnnaam'] . "</td></tr>";
}
echo "</table>";   

我无法让查询根据第一个表中的id读取其他表中的值。有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

在您的情况下,使用JOIN的最佳解决方案。

$result = mysql_query("SELECT comprofiler.*, users.* FROM comprofiler INNER JOIN users ON users.id = comprofiler.user_id WHERE cb_playstationgames LIKE '%FIFA%' ORDER BY comprofiler.id ASC");

如果两个表中都有相同的列名,则您可能必须手动指定要选择的列(在SELECT之后),并且您需要两者。

$result = mysql_query("SELECT comprofiler.id as id_comprofiler, users.id as id_user, users.avatar ... " );

答案 1 :(得分:0)

回答你的问题,为什么它不起作用:

Second query does not use mysql_fetch_array.
$gebruikerid = mysql_fetch_array($gebruikerid);

它会更强大安全&amp; 清洁,如果您使用PDO或MySQLi准备好的语句,如:

$db     = new \PDO(SEE PDO CUNSTRUCT)
$query1 = $db->prepare('
            SELECT * 
            FROM comprofiler 
            WHERE cb_playstationgames LIKE :fifa 
            ORDER BY id ASC
          ');

$query2 = $db->prepare('
             SELECT * FROM users where id LIKE :id
          ');

$query1->bindValue(':fifa', '%FIFA%', PDO::PARAM_STR);
$query1->execute();

while ($row = $query1->fetch(PDO::FETCH_ASSOC)) {
   $query2->bindParam(':id', $row['user_id'], PDO::PARAM_INT);
   $query2->execute();

   //Holds associative array of second query
   $row2 = $query->fetch(PDO::FETCH_ASSOC); 

   //$row1 holds associative array of first query
}