php - mysql php join 语句

标签 php mysql

我不确定该 join 语句是否以正确的方式编写:

<?php 

函数generateComment($commentID) {

   $avatar_Q=mysql_query("
            SELECT * FROM comments com
            INNER JOIN users us ON com.user_id=us.user_id
            WHERE comment_id=$commentID // will that $commentID be red in that query string or will it treat it as a string "commentID"
   ");
   if($row=mysql_fetch_array($avatar_Q))
   {
       $userName=$row["us.user_name"]; // do I refer to the fields like that
       $avatarPath=$row["us.avatar"];
       $avatarRep=$row["us.reputation"];
       $message=$row["com.comment"];
       $date=$row["com.date"];
   }
   mysql_close();

   if(!isset($avatarPath))
   {
       $avatarPath="blank picture";
   }

?>

这是编写 join 语句的最有效方法

最佳答案

您的查询编写正确,但您可以通过在comment_id上指定表来改进它,为了更好的返回,我建议您指定您想要返回的列,我还将使用“字符串”之外的变量,因为它是一个数值(我想你省略了单引号,例如...

$sql = "Select com.command_it, etc 
 FROM ..... WHERE com.comment_id = ".$commentID."";

如果 com.comment_id 是文本或 varchar,则必须使用单引号,例如:

$sql = "Select com.command_it, etc 
 FROM ..... WHERE com.comment_id = '".$commentID."'";

此外,通过这种方式,您只能获得有用户和评论的行,如果一个用户没有评论,您就不会检索该用户...

如果您还希望用户没有评论,则必须使用 LEFT JOIN

$sql = "SELECT com.comment_id, etc FROM users us
            LEFT JOIN comments com ON com.user_id=us.user_id
            WHERE com.comment_id=".$commentID."";

关于php - mysql php join 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8019058/

相关文章:

php - 显示与每个产品对应的所有图像

mysql - Django - 对于在字典中传递的两个变量的循环

mysql - 如何在SSRS中的特定行集中对sql查询结果表进行分区

mysql - 之后添加自动增量主键时了解 MySQL 的行为

php - 数据不是来自 Laravel 关系中的 2 个表 + 1 个数据透视表

PHPUnit - 如何测试回调是否被调用?

php - 在 ImageView 上设置图像从 PC 到 Android

php - 陷入 php foreach 循环 - 需要再次使用相同的键运行循环

javascript - php - 将数组从 php 传递到 jquery ajax,然后再次将相同的数组从 jquery 传递到 php

php - 如何避免我的 PHP 网站上出现垃圾投票