MySQL的PHP​​连接语句

问题描述:

我不知道如果加入语句以正确的方式是writen:MySQL的PHP​​连接语句

<?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"; 
    } 

>

?这是编写联合声明的最有效方式吗?

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

$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.""; 
+0

我想一般把'AS'放在那里只是为了易于理解,并且对插入的字符串'com.comment_id = {$ commentID}'进行大括号处理。 – CD001

不确定wh在你用这条线做

WHERE comment_id=$commentID // will that $commentID be red in that query string or will it treat it as a string "commentID" 

“);

但是你需要指定comment_id来自哪个表,说comments,那么你可能会做这样的事情

$avatar_Q=mysql_query("SELECT * FROM comments com 
    INNER JOIN users us ON com.user_id=us.user_id 
    WHERE com.comment_id=$commentID"); 

,如果这是最好的办法不是SUR,但你可以尝试mysqlslap一个MySQL数据库与它。将它与左连接和其他类型的连接进行比较,看看哪一个最适合您的情况。 MySQL全是关于掌。的。