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";

(customerテーブルからの)顧客の「名前」に基づいて、 Deliveryテーブルで彼の「履歴」を取得する必要があります。

だから、私は彼を印刷します:名前+住所+歴史

最善の解決策は何でしょうか?

@@@@@@@@@ SOLVED @@@@@@@@@@

$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";
}

私の現在の状況は次のとおりです。情報を取得する必要がある3つのテーブルがあります。

表:顧客、ユーザー、履歴。

顧客からはたくさんの顧客が必要です。

配達から私は履歴が必要です(顧客の量に基づく)。

ユーザーからは名前が必要です(実際にはほとんどニックネームです)。

これらの3つのテーブルには「Name」列があり、列名を変更できないため、そのINNER JOINステートメントを使用してCUSTOMERSまたはDELIVERYではなくUSERSから名前を取得するにはどうすればよいですか?

4

3 に答える 3

1

これらの2つのテーブルの名前を使用してINNERJOINを実行したいようです。

于 2012-04-30T21:41:48.723 に答える
1

Darkeden、SELECTcustomers。*を実行するか、SELECTcustomers.nameを'CName'などとして実行できます。このようなエイリアスを使用して、後でecho $row['CName']を実行できます。

于 2012-05-01T03:09:02.970 に答える
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'];
}

これにより、2 番目のクエリが不要になります。

于 2012-04-30T21:42:05.933 に答える