1

2 つの関係テーブルから 1 つのアカウントのみを表示したい。たとえば、口座番号を照会して入力すると、すべてのメンバーではなく、自分の口座の詳細のみが表示されます。したがって、私の出力では、データベース内のメンバー全体とその詳細が表示されます。2 つのリレーショナル テーブルから 1 つのアカウントのみを表示するにはどうすればよいですか? 私は自分のSQLに何か問題があることを知っています。

<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT member.*, account.*
FROM member, account
WHERE member.mem_id = account.mem_id';

mysql_select_db('databasename');
$retval = mysql_query( $sql, $conn ); 
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "Account Number:{$row['Account_Number']}  <br> ".
 "First Name: {$row['fname']} <br> ".
 "Last Name: {$row['lname']} <br> ".
 "Address: {$row['address']} <br> ".
 "Contact: {$row['contact']} <br> ".
 "Share Capital: {$row['Share_Capital']} <br> ".
 "Regular Savings: {$row['Regular_Savings']} <br> ".
 "Power Savings: {$row['Power_Savings']} <br> ".
 "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>

これが出力です。

Account Number: 
First Name:
Last Name:
Address: 
Contact: 
Share Capital: 
Regular Savings:
Power Savings:
4

3 に答える 3

0

1 つのアカウントのみを返すには、次を試してください

'SELECT member.*, account.* FROM member inner join account on member.mem_id = account.mem_id limit 1';

ただし、me​​mberid のメンバーとアカウントを取得するには、クエリを変更して mem_id の where 述語を含める必要があります。例えば:

    $member_id = 'some memberid'
    'SELECT member.*, account.*
    FROM member inner join account
    on member.mem_id = account.mem_id 
    where member.mem_id = $member_id';
于 2013-08-13T03:12:46.780 に答える
0

同じ ID を比較しています: "WHERE member.mem_id = account.mem_id" (member.mem_id と account.mem_id が同じ "user" を参照していると想定しています)。

次のようにする必要があります。

$query = "SELECT member.*, account.*
FROM member, account
WHERE member.mem_id = " . $the_id;

$the_id は、フォーム (明確にするために HTML フォーム) から取得した数値にする必要があります。

それが役に立てば幸い :)

于 2013-08-13T03:19:14.553 に答える