0

データベースに 3 つのテーブルがあります。

customer
contacts
reseller

私のURLにはindex.php?rid=5 (rid = 5は5のシーケンスを持つ再販業者テーブルの行です)

私の顧客テーブルにはresellerid列があるため、そこにはresellerid5の行がたくさんあります

私の連絡先テーブルには、顧客company_sequenceテーブルの列にリンクするsequence列があります。

連絡先テーブルには電子メールパスワードの列があります

連絡先テーブルから行のログインフォームを作成して、電子メールとパスワードを使用してログインしようとしています。

私はこのコードを試しました:

$sql="SELECT * from customer where resellerid = '".$ResellerID."' ";
        $rs=mysql_query($sql,$conn);
        while($result=mysql_fetch_array($rs))
        {
        $sql2="select * from contacts where company_sequence = '".$result["sequence"]."' and email='".$email."' and password='".md5($password)."'";
        $rs2=mysql_query($sql2,$conn);
        $result2=mysql_fetch_array($rs2);

しかし、連絡先テーブルif(mysql_num_rows($rs2) > 0)に有効な行がある場合でも、実行すると最後の行のみがチェックされます。

どうすればこれを機能させることができますか?

4

1 に答える 1

2
SELECT * FROM customer
JOIN contacts ON (company_sequence = sequence)
WHERE resellerid = ?
AND email = ?
AND password = ?

また、次のような批判もあります。

  • を使用してext/mysqlいます。PDO または mysqli を使用する
  • パラメータ化されたクエリを使用しておらず、クエリがインジェクションに対して脆弱です
  • md5パスワードに適していない弱いハッシュです
于 2013-09-14T17:55:14.373 に答える