mysqlテーブルの同じFKで複数の値を更新する

Code_Ed_Student

mysqlテーブルのデータを自動的に入力するフィールドを持つフォームがあります。これらの入力フィールドは、と呼ばれるmysqlテーブルから値を取得しますpersonこれらの値を正常に表示できます。しかし、これらの値を正しく更新することはできません。値は、と呼ばれる外部キーを共有しますacademy_idフィールドを更新すると、値がすべて同じ値に変更されます。各値を正常に更新するにはどうすればよいですか?

フォーム送信前のテーブル値:

+----+------------+------------+-----------+
| ID | academy_id | first_name | last_name |
+----+------------+------------+-----------+
|  1 |         15 | Person1    | Last1     |
|  2 |         15 | Person2    | Last2     |
+----+------------+------------+-----------+

値を変更しようとした後

+----+------------+------------+-----------+
| ID | academy_id | first_name | last_name |
+----+------------+------------+-----------+
|  1 |         15 | Person2    | Last2     |
|  2 |         15 | Person2    | Last2     |
+----+------------+------------+-----------+


//DATBASE SELECT QUERY 
$id = 15; 
$db_select3  = $db_con->prepare("
SELECT     a.name, 
           a.academy_id,
           p.first_name,
           p.last_name
    FROM academy a
    LEFT JOIN person p ON a.academy_id = p.academy_id
    WHERE a.academy_id = :id
");
if (!$db_select3) return false;
if (!$db_select3->execute(array(':id' => $id))) return false;
    $results3 = $db_select3->fetchAll(\PDO::FETCH_ASSOC);
    if (empty($results3)) return false;
    $result3 = '';
echo "<strong>Personel Information:</strong>";
$s = 1;
foreach ($results3 as $value3){ 
    echo "<ul id=\"pq_entry_".$s."\" class=\"clonedSection\">";
    echo "<li><input id=\"person_fname_".$s."\" name=\"person_fname_".$s."\" placeholder=\"Person #1 - First Name\" type=\"text\" value='" . $value3['first_name'] ."'/></li>";
    echo "<li><input id=\"person_lname_".$s."\" name=\"person_lname_".$s."\" placeholder=\"Last Name\" type=\"text\" value='" . $value3['last_name'] ."'/></li>";
    echo "</ul>";
$s++;   
}   
echo "<input type='button' id='btnAdd' value='add another Person' />
<input type='button' id='btnDel' value='Delete' /></br>";

//UPDATE VALUES IN DATABASE
if(isset($_POST['submit'])) {
        $f = 1;
        while(isset($_POST['person_fname_' . $f]))
        {

            $person_fname = $_POST['person_fname_' . $f];
            $person_lname = $_POST['person_lname_' . $f];

            $query_init3 = "UPDATE person SET academy_id=:id, first_name=:person_fname, last_name=:person_lname WHERE academy_id=:id;";
            $query_prep3 = $db_con->prepare($query_init3);
            $query_prep3->execute(array(
                "id" => $id,
                "person_fname" => $person_fname,
                "person_lname" => $person_lname
            ));

            $f++;
        }
}
TML

その$ s変数を取り除き、次のようにperson.IDを入力に直接関連付けます。

$db_select3  = $db_con->prepare("
    SELECT  a.name,
            a.academy_id,
            p.id as person_id,
            p.first_name,
            p.last_name
    FROM academy a
    LEFT JOIN person p ON a.academy_id = p.academy_id
    WHERE a.academy_id = :id ");

/* ... */ 

foreach ($results3 as $value3){
    $id = $results3['person_id'];
    $first_name = $results3['first_name'];
    $last_name = $results3['last_name'];

    echo '<ul id="pq_entry_'.$s.'" class="clonedSection">';
    echo '<li><input id="person_fname_'.$s.'" name="person['.$id.'][fname]"
         placeholder="Person #1 - First Name" type="text" value="'
         $fname.'/></li>';
}

次に、更新ページで$ _POST ['person']を次のように処理します。

foreach($_POST['person'] as $person_id => $person) {
    /* 
       UPDATE person SET academy_id=:id, 
       first_name=:person_fname, last_name=:person_lname
       WHERE id = $person_id;
    */
}

コードがいたるところにあるため、例を最小化しましたが、これにより、作業するための大まかなテンプレートが得られることを願っています。この$ _POST関係がどのように機能するかについては、php:HTMLFAQを参照してください

また、XSSなどの攻撃を防ぐために、データベースから出力される値に対するHTMLエンティティ保護の必要性についても完全に理解しました。これらを後でではなく、早く調べる必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQL:同じテーブルで複数の値を取得する

分類Dev

複数のテーブルで同じ値を検索する

分類Dev

mysqlの異なるWHERE条件で同じテーブルの複数のフィールドを更新する

分類Dev

OracleSQLの同じサブクエリで同じテーブルの複数の列を更新する方法

分類Dev

同じFKを持つ複数のテーブルにEFCoreを使用するステートメント

分類Dev

同じテーブルの1つの列から複数の列の値を更新する

分類Dev

同じテーブルからの複数の値を持つmysql更新テーブル列

分類Dev

データベーステーブルの列をMySqlの同じテーブルの数値列で更新する

分類Dev

同じテーブルの値でテーブルを更新する

分類Dev

SQL:同じテーブルの結果で複数の行を更新します

分類Dev

mysqlの同じテーブルの複数の列を合計する

分類Dev

Oracle-同じ列名で複数のテーブルを更新します

分類Dev

MySQLの日時列を同じテーブルの別の行から減算した値で更新する

分類Dev

複数の値でテーブルを更新する

分類Dev

MySQLの複数のデータベースで同じテーブルを変更する方法

分類Dev

同じテーブルの同じ列の値で列を更新します

分類Dev

SQL-同じテーブル内の他の複数の行の値で複数の行を一度に更新します

分類Dev

複数の列に同じ値を持つMySQLテーブルからすべての行を取得するにはどうすればよいですか?

分類Dev

1つのMysqlテーブルに複数のFKを追加する

分類Dev

同じユーザーIDでmysqlテーブルに複数のIDを追加する方法は?

分類Dev

MySQLのJOINテーブルから同じテーブルから複数の行をプルする

分類Dev

同じテーブルの行を複数の条件で比較する

分類Dev

複数のスクリプトで同じブール値を使用するUnity

分類Dev

MySql LEFTは、同じIDまたは名前で同じ複数のテーブルを結合します

分類Dev

同じテーブル内の複数のレコードを更新します

分類Dev

同じテーブルmysqlからの選択値から同じテーブルを更新します

分類Dev

同じテーブルで複数のselectクエリを結合するPostgreSql

分類Dev

SQL同じテーブルで複数の結合を使用する方法

分類Dev

ADODB / Access:同じテーブルのレコードから複数のフィールドを更新する

Related 関連記事

  1. 1

    SQL:同じテーブルで複数の値を取得する

  2. 2

    複数のテーブルで同じ値を検索する

  3. 3

    mysqlの異なるWHERE条件で同じテーブルの複数のフィールドを更新する

  4. 4

    OracleSQLの同じサブクエリで同じテーブルの複数の列を更新する方法

  5. 5

    同じFKを持つ複数のテーブルにEFCoreを使用するステートメント

  6. 6

    同じテーブルの1つの列から複数の列の値を更新する

  7. 7

    同じテーブルからの複数の値を持つmysql更新テーブル列

  8. 8

    データベーステーブルの列をMySqlの同じテーブルの数値列で更新する

  9. 9

    同じテーブルの値でテーブルを更新する

  10. 10

    SQL:同じテーブルの結果で複数の行を更新します

  11. 11

    mysqlの同じテーブルの複数の列を合計する

  12. 12

    Oracle-同じ列名で複数のテーブルを更新します

  13. 13

    MySQLの日時列を同じテーブルの別の行から減算した値で更新する

  14. 14

    複数の値でテーブルを更新する

  15. 15

    MySQLの複数のデータベースで同じテーブルを変更する方法

  16. 16

    同じテーブルの同じ列の値で列を更新します

  17. 17

    SQL-同じテーブル内の他の複数の行の値で複数の行を一度に更新します

  18. 18

    複数の列に同じ値を持つMySQLテーブルからすべての行を取得するにはどうすればよいですか?

  19. 19

    1つのMysqlテーブルに複数のFKを追加する

  20. 20

    同じユーザーIDでmysqlテーブルに複数のIDを追加する方法は?

  21. 21

    MySQLのJOINテーブルから同じテーブルから複数の行をプルする

  22. 22

    同じテーブルの行を複数の条件で比較する

  23. 23

    複数のスクリプトで同じブール値を使用するUnity

  24. 24

    MySql LEFTは、同じIDまたは名前で同じ複数のテーブルを結合します

  25. 25

    同じテーブル内の複数のレコードを更新します

  26. 26

    同じテーブルmysqlからの選択値から同じテーブルを更新します

  27. 27

    同じテーブルで複数のselectクエリを結合するPostgreSql

  28. 28

    SQL同じテーブルで複数の結合を使用する方法

  29. 29

    ADODB / Access:同じテーブルのレコードから複数のフィールドを更新する

ホットタグ

アーカイブ