使用 PHP 和 mysqli 从多个 MySQL 表中获取数据
Posted
技术标签:
【中文标题】使用 PHP 和 mysqli 从多个 MySQL 表中获取数据【英文标题】:Getting Data From Multiple MySQL Tables Using PHP and mysqli 【发布时间】:2014-09-19 07:41:35 【问题描述】:我正在尝试从已建立索引以相互关联的多个表中提取数据。我在 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 hereprint(row[0]);
应该是print($row[0]);
,除非缺少的$
只是这里的复制/粘贴问题?另外,为什么要查询2次-> $result = $db->query($query)
&& $result = mysqli_query($db, $query)
我希望我能接受您的评论作为答案,因为就是这样
【参考方案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
【讨论】:
以上是关于使用 PHP 和 mysqli 从多个 MySQL 表中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
使用“mysql_fetch_row”从数据库中检索结果并使用 PHP 和 mysqli 插入数组?