0

私のコード全体を以下に示します。$membersいくつかの ID を格納する配列があります。ループを実行してテーブル内の ID を検索し、それぞれの名前を取得して別の配列に保存します$members_name。次に、両方の配列をテーブルに挿入します。$members配列のサイズは1 ~ 6 です。

<?php
    session_start();
        $members = $_POST['mem'];
        $n=count($members);
        foreach($members as $key=>$value){
            $res = mysql_query("SELECT id,name,email FROM users WHERE id='".$value."'");
            if ($res === false) {
                echo mysql_error();
                die;
            }
            $row = mysql_fetch_assoc($res);

            if($row['id'])
            {
                $members_name[]=$row['name'];
                $members_email[]=$row['email'];
            }
        }
        $sess_uid = $_SESSION['id'];
        $sess_email = $_SESSION['email'];
        $sess_name = $_SESSION['name'];
        $id=$_SESSION['eid'];
        $name=$_SESSION['ename'];
        $members=$_SESSION['emembers'];

        if ($n==5){
            $res=mysql_query("INSERT INTO eventregistration(event_id,event_name,event_members,mem_1_id,mem_1_name,mem_2_id,mem_2_name,mem_3_id,mem_3_name,mem_4_id,mem_4_name,mem_5_id,mem_5_name,mem_6_id,mem_6_name) 
      VALUES('".$id."','".$name."','".$members."','".$sess_uid."','".$sess_name."','".$members[0].",'".$members_name[0]."','".$members[1].",'".$members_name[1]."','".$members[2].",'".$members_name[2]."','".$members[3].",'".$members_name[3]."','".$members[4].",'".$members_name[4]."')");
        }
        else if ($n==4){
            $res=mysql_query("INSERT INTO eventregistration(event_id,event_name,event_members,mem_1_id,mem_1_name,mem_2_id,mem_2_name,mem_3_id,mem_3_name,mem_4_id,mem_4_name,mem_5_id,mem_5_name) 
      VALUES('".$id."','".$name."','".$members."','".$sess_uid."','".$sess_name."','".$members[0].",'".$members_name[0]."','".$members[1].",'".$members_name[1]."','".$members[2].",'".$members_name[2]."','".$members[3].",'".$members_name[3]."')");
        }
        else if ($n==3){
            $res=mysql_query("INSERT INTO eventregistration(event_id,event_name,event_members,mem_1_id,mem_1_name,mem_2_id,mem_2_name,mem_3_id,mem_3_name,mem_4_id,mem_4_name) 
      VALUES('".$id."','".$name."','".$members."','".$sess_uid."','".$sess_name."','".$members[0].",'".$members_name[0]."','".$members[1].",'".$members_name[1]."','".$members[2].",'".$members_name[2]."')");
        }
        else if ($n==2){
            $res=mysql_query("INSERT INTO eventregistration(event_id,event_name,event_members,mem_1_id,mem_1_name,mem_2_id,mem_2_name,mem_3_id,mem_3_name) 
      VALUES('".$id."','".$name."','".$members."','".$sess_uid."','".$sess_name."','".$members[0].",'".$members_name[0]."','".$members[1].",'".$members_name[1]."')");
        }
        else if ($n==1){
            $res=mysql_query("INSERT INTO eventregistration(event_id,event_name,event_members,mem_1_id,mem_1_name,mem_2_id,mem_2_name) 
      VALUES('".$id."','".$name."','".$members."','".$sess_uid."','".$sess_name."','".$members[0].",'".$members_name[0]."')");
        }
        else if ($n==0){
            $res=mysql_query("INSERT INTO eventregistration(event_id,event_name,event_members,mem_1_id,mem_1_name) 
      VALUES('".$id."','".$name."','".$members."','".$sess_uid."','".$sess_name."')");
        }
        $url="events.php?slug=".$slug;
            header('Location: ' . $url);
            exit;
?>

私はまだPHPの学習者です。PHP の OLD 形式を使用していることはわかっています。それでも、PDO についてではなく、このページを実行するために助けが必要です。

4

1 に答える 1

1
  1. mysql_関数は非推奨であるため、使用を停止する必要があります。代わりにmysqli_またはを使用してください。PDO
  2. コードは SQL インジェクションに対して脆弱です。
  3. テーブル構造が正規化されていません。nメンバー用の列が必要な理由はまったくありません。
  4. すべてのメンバーに対してロジックを実行する代わりにn、それらを配列に入れ、動的列リストを作成します。
于 2013-02-07T18:03:32.060 に答える