【问题标题】:Getting Data From Multiple MySQL Tables Using PHP and mysqli使用 PHP 和 mysqli 从多个 MySQL 表中获取数据
【发布时间】:2026-02-21 16:25:01
【问题描述】:

我正在尝试从已建立索引以相互关联的多个表中提取数据。我在 MySQLWorkbench 中运行了这个查询,它运行成功。但是,当我尝试运行 PHP 测试时,什么都没有出现,甚至第一个字段也没有。这是我的代码:

<?php
$db = new mysqli('host', 'user', 'password', 'database');

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
$query = "
    SELECT 
        `Contact`.`firstName`,
        `Contact`.`lastName`,
        `ssn`.`ssn`,
        `Contact`.`country`,
        `Allergies`.`allergy`,
        `Allergies`.`allergyType`,
        `Allergies_Contact`.`allergyNotes`,
        `CurrentPrescriptions`.`prescriptionName`,
        `CurrentPrescriptions`.`prescribedDate`,
        `BloodType`.`bloodType`
    FROM
        `database`.`Contact`,
        `database`.`Allergies_Contact`,
        `database`.`Allergies`,
        `database`.`ssn`,
        `database`.`CurrentPrescriptions`,
        `database`.`BloodType`
    WHERE
        `Contact`.`contactKey` = `Allergies_Contact`.`contactKey`
            AND `Allergies`.`allergiesKey` = `Allergies_Contact`.`allergiesKey`
            AND `ssn`.`contactKey` = `Contact`.`contactKey`
            AND `CurrentPrescriptions`.`contactKey` = `Contact`.`contactKey`
            AND `BloodType`.`contactKey` = `Contact`.`contactKey`;
";

$result = $db->query($query) or die($db->error.__LINE__);
if ($result = mysqli_query($db, $query)) {
    while ($row = mysqli_fetch_row($result)) {
        print(row[0]);
    }
    mysqli_free_result($result);
}
mysqli_close($db);
?>

请告诉我我在这里做错了什么,因为我可以看到它的格式正确。

【问题讨论】:

  • 要从不同的表中获取数据,您应该使用 SQL 连接。它非常方便,专为这种情况而设计。 See here
  • print(row[0]); 应该是print($row[0]);,除非缺少的$ 只是这里的复制/粘贴问题?另外,为什么要查询2次-> $result = $db-&gt;query($query) && $result = mysqli_query($db, $query)
  • 我希望我能接受您的评论作为答案,因为就是这样

标签: php mysql select mysqli mysql-workbench


【解决方案1】:

几件事:

1.- 你有两个query 句子,改变:

$result = $db->query($query) or die($db->error.__LINE__);
if ($result = mysqli_query($db, $query)) {

有了这个

$result = $db->query($query) or die($db->error.__LINE__);
if ($result !== false) {

2.- 尝试打印变量时出现错误,更改:

while ($row = mysqli_fetch_row($result)) {
    print(row[0]);
}

有了这个

while ($row = mysqli_fetch_row($result)) {
    print($row[0]); // You missed a $
}

【讨论】:

    【解决方案2】:
    <?php
    //conection:
    $link = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($link));
    
    //consultation:
    
    $query = "SELECT name FROM mytable" or die("Error in the consult.." . mysqli_error($link));
    
    //execute the query.
    
    $result = $link->query($query);
    
    //display information:
    
    while($row = mysqli_fetch_array($result)) {
      echo $row["name"] . "<br>";
    }
    ?> 
    

    http://php.net/manual/en/function.mysqli-connect.php

    【讨论】: