2016-07-17 4 views
0

My Search機能は正常に動作しますが、すべてのデータが正しくフェッチされるわけではありません。私は2つのテーブルからデータを表示したいが、残念ながら第二のテーブルから、それは常にちょうど最初の行を私に示しています別のテーブルから正しいIDを表示するために使用するSQL文

私は表示させたいこれらのデータ: PERSONNAME、personsurname、persondepartment、personboard(tblpersonから)とSTARTDATEメンバーからの終了。

これは私の現在のクエリです。私が検索したIDは正確なデータを表示しますが、メンバーテーブルから開始日と終了日の最初の行のみを取り出します。

"select * FROM tblperson, members 
where personname = '$personname' AND personsurname = '$personsurname' 
GROUP BY personname"; 

と、これは私のPHPコードです:

for ($i=0; $i <$num_results; $i++) 
    { 
    $row = $result->fetch_assoc(); 
    echo '<p><strong>'.($i+1).'. Name: '; 
    echo htmlspecialchars(stripslashes($row['personname'])); 
    echo '<br />PersonID: '; 
    echo stripslashes($row['personid']); 
    echo '<td><a href="editpdata.php?personid=' . $row['personid'] . '">Edit</a></td>'; 
    echo '</strong><br />Surname: '; 
    echo stripslashes($row['personsurname']); 
    echo '<br />Department: '; 
    echo stripslashes($row['persondepartment']); 
    echo '<br />Board: '; 
    echo stripslashes($row['personboard']); 
    echo '<br />Start Date: '; 
    echo stripslashes($row['startdate']); 
    echo '<br />End Date: '; 
    echo stripslashes($row['enddate']); 
    echo '</p>'; 
    } 
+0

は、明示的に両方の列を設定しますあなたのselectステートメントのテーブルは、現在SQLインジェクション攻撃に脆弱であることに注意してください。 – Ghost

+0

正直言って、私はPでもHPあなたが私に例を示すことができれば、おそらく私はそれを実装しようとします。今の唯一の問題は、私が名前と姓で検索したすべての人が間違ったIDと間違ったStart End Dateを受け取ったということです。 – Shkolla

+0

SELECTの集約されていないフィールドはGROUP BYにある必要があります – SIDU

答えて

0
SELECT 
    p.personid, p.personname, p.personsurname, p.persondepartment, p.personboard, 
    max(m.startdate) AS last_startdate, max(m.enddate) AS last_enddate 
FROM tblperson AS p 
LEFT JOIN members AS m ON p.personid = m.personid ## please check this line 
WHERE p.personname = '?' 
AND p.personsurname = '?' 
GROUP BY 1,2,3,4,5 

MySQLを使用していて、PERSONIDは一意のキーである場合は、あなたが行うことができます:

GROUP BY p.personid 
+0

こんにちは、私はこのクエリを試してみたところ、正常に動作しているようです。私は他の提案をしようとしますalso.SELECT * \t \t \t tblperson \t \t \t FROM tblperson.personid BY PERSONNAME = '$のPERSONNAME' AND personsurname = '$のpersonsurname' AND members.person_id = tblperson.personid GROUPメンバーを登録しよう」 ; Danke @SIDU – Shkolla

+0

通常、personidは主キーであるため、personidによるグループは期待される結果を返しますが、標準SQLであるとは限りません – SIDU

関連する問題