更新コマンドを使用して、データベース内の特定のエントリのを変更しますが、同じtype_id
を持つすべてのエントリのを変更しています。更新コマンドが同じIDを持つすべてのフィールドを更新するのはなぜですか?
個々のエントリのtype_name
のみを変更し、type_id
のすべてのエントリに関連付けられているを変更する必要はありません。
私は更新クエリを持っている:
$sql = 'UPDATE photos
LEFT JOIN types
ON photos.type_id = types.type_id
SET photos.photo_title = $_POST['photo_title'],
types.type_name = $_POST['type_name']
WHERE photos.photo_id = 3';
はここで私が使用しているフォームの:
<form name="form1" method="post" action="">
<input name="photo_title" type="text" value=""/>
<textarea name="type_name"></textarea>
<input type="submit" name="update" value="Update entry" />
</form>
は、ここに私のデータベース構造です:
TABLE写真
photo_id PRIMARY KEY
photo_title
は
はPRIMARY KEY
TYPE_NAME
をTYPE_ID FOREIGN KEY
TABLEタイプをTYPE_IDサイドノートでは
をしたい場合は、どのようにタイプのテーブルの「個々のエントリ」を識別うだから、テーブルのリレーションシップを指定する必要がありますか?あなたのSQLは、指定されたtype_idの型のすべての行を更新する必要があると言います - 更新する必要があるものを特定する方法と、そうでないものを区別する方法は何ですか? –
あなたのコードは、私が数えることができる方法よりもひどいです。更新には主キーを使用します。あなたのSQLにはPOST変数を含めないでください!今まで! SQLインジェクションが意味することと、パラメータの使い方を学ぶ。 – SpliFF
ええ、私はスプライフを知っています。私はちょうど私が何をしようとしているのか理解しやすくするためにここに行った。私は実際に準備されたステートメントを使用して、変数をバインドしていますが、準備されたステートメントを理解していない人にはもっと混乱させたくありませんでした。 – zeckdude