0

我正在整合 PHP 和 MySQL。以下代码工作正常:

<?php
include_once("conf.php");

$sql = "SELECT Name,Address FROM customers";
$rs = mysqli_query($connect,$sql) or die("can't connect to DB");
$temp = mysqli_num_rows($rs);


while($row = mysqli_fetch_array($rs))
{
  $convert = mb_convert_encoding ($row['Name'],"UTF-8","gbk");
  $print .= "<tr><td>".$convert."</td><td>".$row['Address']."</td><td>".$sql2."</td></tr>\n";
}

此代码正在运行,但现在我需要根据此表的结果(名称)从另一个表中选择特定信息。

所以,这将是另一个 MySQL 选择:

$sql2 = "select History from Delivery where Name="$convert";

根据我客户的“姓名”(来自客户表),我需要在交付表中获取他的“历史记录” 。

所以,我会打印他的:姓名+地址+历史

最好的解决方案是什么?

@@@@@@@@@ 解决了 @@@@@@@@@@

$sql = 'SELECT * FROM customers c 
            INNER JOIN Delivery d 
            ON c.Name = d.Name';

$result = mysqli_query($connect, $sql);
$temp = mysqli_num_rows($rs);


while($row = mysqli_fetch_array( $result))
{
  $convert = mb_convert_encoding ($row['Name'],"UTF-8","gbk");
  $print .= "<tr><td>".$convert."</td><td>".$row['Address']."</td><td>".$row['History']."</td></tr>\n";
}

我目前的情况是:我需要从三个表中获取信息。

表:客户、用户、历史。

从客户那里我需要大量的客户。

从交货开始,我需要历史记录(基于客户数量)。

来自用户我需要姓名(实际上它几乎是一个昵称)。

由于这三个表有一个“名称”列并且我不能更改列名,我如何使用该 INNER JOIN 语句从用户而不是客户或交付中获取名称?

4

3 回答 3

1

听起来您只想对名称上的这两个表进行 INNER JOIN 吗?

于 2012-04-30T21:41:48.723 回答
1

在第一个表上进行连接以一次获取您需要的所有数据:

$sql = 'SELECT * FROM customers c 
            INNER JOIN Delivery d 
            ON c.Name = d.Name';

$result = mysqli_query($connect, $sql);

while($row = mysqli_fetch_array( $result))
{
    echo $row['History'] . ' ' . $row['Name'];
}

这使您不再需要第二个查询。

于 2012-04-30T21:42:05.933 回答
1

Darkeden,您可以执行 SELECT customers.* 或者您可以执行 SELECT customers.name as 'CName' 等。使用这样的别名,您可以稍后执行 echo $row['CName']。

于 2012-05-01T03:09:02.970 回答