php - SQL - 连接两个表

标签 php mysql sql

我正在尝试掌握 SQL 中连接表的主题。我知道有多个连接,但不确定在这里实现哪个:

这是我在 php 中的 SQL 行:

$sql=mysql_query("
SELECT * FROM comments 
WHERE item_id = '{$item_id}' 
   AND review > '' 
ORDER BY good DESC, rate_id ASC");

这就是我想要加入的内容:另一个名为“users”的表。 *“users”和“comments”都有一个名为“user_id”的列要加入。*我想将这两个列关联起来以在用户表中查找完整的“用户名”。

我知道 SELECT 不是最佳实践;但为了这个演示,你能把它放在这里吗?我还知道需要注意的 MySQL 注入(inject)可能性。 **

最佳答案

我建议您使用 ANSI SQL-92 格式而不是 ANSI SQL-89。试试这个:

SELECT a.* , b.*
FROM comments a
        INNER JOIN users b
            ON a.user_id = b.user_id
WHERE item_id = '{$item_id}'  AND 
      review > '' 
ORDER BY good DESC, rate_id ASC

<强> Good Definition of JOINs
<强> Read something here: INNER JOIN (ANSI SQL-89 vs ANSI SQL-92)

其他信息:

由于您为此使用 PHP,我还建议使用 PHP PDO Technology

一个例子是:

<?php


$stmt = $dbh->prepare("SELECT a.* , b.*
    FROM comments a
            INNER JOIN users b
                ON a.user_id = b.user_id
    WHERE item_id = ?  AND 
          review > ? 
    ORDER BY good DESC, rate_id ASC");

$stmt->bindParam(1, $item_id);
$stmt->bindParam(2, '');
$stmt->execute();

?>

关于php - SQL - 连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11877786/

相关文章:

python - 带有 extra() 的 Django 查询集

file-upload - 当上传大于 POST_MAX_SIZE 时,PHP $_POST/$_FILES 为空

mysql - 如何在没有 GROUP_CONCAT 的情况下将行转换为列?

php - 一个页面操作与多个 html 文件

mysql - SQL - 根据用户表中的值更新连接表

java - 当其中的数据被修改时,链接就会过期

sql - 在自定义 ContentProvider 函数中过滤输入

c# - ODBC 参数占位符可以命名吗?

php - 警告: mysqli_error() expects parameter 1 to be mysqli, null given in/users/mikadoru/www/register.php on line 16 [duplicate]

php - 如何使用亚马逊的产品广告 API 获取运输信息