php - PHP MySQL 中的 JOIN 问题

标签 php mysql mysqli error-handling

在向查询中添加 JOIN 时遇到一些困难。我正在连接到两个单独的数据库(在同一台服务器上)。出于这个原因,我正在简单地编写这个 mysqli 并在它工作后转换为准备好的语句。

// REMOVED: DB VARIABLES

$conn = new mysqli($servername, $username, $password, $db_connective_data);
if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }
$conn2 = new mysqli($servername, $username, $password, $db_resources);
if ($conn2->connect_error) { die("Connection failed: " . $conn2->connect_error); }

$sql = "SELECT * FROM downloads LEFT JOIN resource_data ON downloads.resource_id_REF=resource_data.resource_id WHERE downloads.user_basics_id_REF='$user_id'";
$result = $conn->query($sql);

$number_of_download_rows_returned = mysqli_num_rows($result) -1;

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $resource_id_REF[] = $row['resource_id_REF'];
        $download_date[] = date('Y-m-d', strtotime($row['download_date']));
        $resource_title[] = $row['resource_title'];
        $resource_title_link[] = str_replace(" ", "-", $row['resource_title']);
    }
}

$conn->close();

没有 JOIN 的查询工作正常(尽管没有返回 resource_title):

$sql = "SELECT * FROM downloads WHERE downloads.user_basics_id_REF='$user_id' ORDER BY downloads.download_date DESC";

我在这里错过了什么?第一个代码示例将不返回任何结果。第二个将返回三个。

非常感谢任何帮助。

这是我引用的不同数据库名称的列表。正如我所说,一些数据在“connective_data”数据库中,一些在“资源”数据库中。

$db_connective_data = "connective_data";
$db_lists = "lists";
$db_messaging = "messaging";
$db_resources = "resources";
$db_users = "users";

我似乎无法将其中两个连接起来。我是否遗漏了一些非常明显的东西?

最佳答案

  1. 如果数据库位于同一个 mysql 服务器上,则无需创建 2 个连接。您可以简单地将另一个数据库中的表引用为 databasename.tablename。

  2. 因此,您可以连接来自 2 个不同数据库的 2 个表:

    $sql = "SELECT * FROM yourdatabase1.downloads LEFT JOIN yourdatabase2.resource_data ON yourdatabase1.downloads.resource_id_REF=yourdatabase2.resource_data.resource_id WHERE yourdatabase1.downloads.user_basics_id_REF='$user_id'";

显然,您需要在上述查询中用您的真实数据库名称替换 yourdatabase1 和 yourdatabase2。

更新:你确定你需要这么多数据库吗?这些对我来说似乎是表格,而不是数据库。

关于php - PHP MySQL 中的 JOIN 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417126/

相关文章:

php - MySQL使用foreach将多个图像连接到相册并在页面上显示

php - 如何使用 mysqli 进行 LIKE 查询并获取所有结果?

php - 在 mysqli fetch_assoc( ) PHP 中保留换行符

php - 我做错了什么? "cronjob"

PHP 获取两个日期之间每个月的星期六和星期日数

php - 如何将图片与文章 ID 关联起来

MySQL 与谓词生成器不工作?

mysql - 如何在Azure VM CentOS上安装mysql 5.5

php - 在 MySQL 查询中传递 php 变量

php - 如何将 http 请求作为 curl 帖子?