2017-08-11 9 views
-1

マイページには、PDOの更新のために$ _POSTを受け取る: enter image description here

id: 5296 
sg: 5285-5034 
t_dur: 133867 
... 
id_200: data... 
id_651: ... 
id_38: ... 
id_971: ... 
id_326: ... 
id_327: ... 
id_89: ... 

IDを知らなくても、私のテーブルを更新する方法は?別のテーブルで利用可能なID_ XXX

UPDATE table_name SET id_XXX = ? AND id_XXX = ? AND ... WHERE id = 5296 

一覧。

+0

あなたの構文が無効です。 UPDATE構文のマニュアルを参照してください。https://dev.mysql.com/doc/refman/5.7/en/update.html –

+0

XXXを数字で置き換えても機能します。これが私が質問する理由です。 –

+0

可変変数とは何ですか?それがPOSTごとに受信された場合、それは既に配列ではないでしょうか?クエリビルダーが必要です。 - しかしもっと重要なのは、恐ろしいテーブルスキームはどのようになったのか? – mario

答えて

1

これは安全ではありませんが、クエリに列と値を追加する方法を示しています。

<?php 
$update = []; 
foreach($_POST as $key => $value) { 
    if(substr($key, 0, 3) == 'id_') { 
     // Only if $key starts with "id_" 
     $update[] = "$key = $value"; 
    } 
} 
$sql = 'UPDATE table_name SET ' . implode(", ", $update) . " WHERE id = 10"; 

[編集]三項演算子でnull値のため オプション:

<?php 
$update = []; 
foreach($_POST as $key => $value) { 
    if(substr($key, 0, 3) == 'id_') { 
     // Only if $key starts with "id_" 
     $val = (empty($value)) ? 'null' : $value; 
     $update[] = "$key = $value"; 
    } 
} 
$sql = 'UPDATE table_name SET ' . implode(", ", $update) . " WHERE id = 10"; 

[/編集]

+0

それは動作します!ありがとう、しかし空の場合は "null" $値を設定する方法は? (例:id_89 = '' - > id_89 = _null_) –