- 【PHP】下らねぇ質問はここに書き込みやがれ 3©2ch.net
998 :デフォルトの名無しさん[sage]:2016/03/13(日) 15:35:19.10 ID:kS6/ihj4 - ume
| - 【PHP】下らねぇ質問はここに書き込みやがれ 4 [無断転載禁止]©2ch.net
4 :デフォルトの名無しさん[sage]:2016/03/13(日) 18:29:54.00 ID:kS6/ihj4 - POSTで受け取った値でprepara+bindvalueを自動作成する方法を自分で作ってみたのですが、
$stmt = $pdo -> prepare($sql);の部分でエラーが出てしまいます。[42000] 改善策をお願いします。 $table = "$_GET['table']"; $clmname = ''; $valname = ''; foreach ($_POST as $key => $value) { $clmname .= $key.", "; $valname .= ":".$key.", "; } unset($key); //末尾のコンマと空白削除 $clmname = substr($clmname, 0, -2); $valname = substr($valname, 0, -2); $sql = "INSERT INTO $table($clmname) VALUES($valname)"; $stmt = $pdo -> prepare($sql); foreach ($_POST as $key => $value) { $stmt -> bindValue(":$key", $clan_policy, PDO::PARAM_STR); } $stmt -> execute();
| - 【PHP】下らねぇ質問はここに書き込みやがれ 4 [無断転載禁止]©2ch.net
6 :デフォルトの名無しさん[sage]:2016/03/13(日) 19:23:29.33 ID:kS6/ihj4 - ?INSERT INTO scouts_a(gender, age, active) VALUES(:gender, :age, :active)
$sqlは上記のような感じで、特に支障はない模様です。 ※便宜上パラメーターを3つにしましたが、10ぐらいあり、内容もテーブル名によって変動します。 そのため自動作成したいと考えています。 foreachも間違っていたので修正しておきます。 foreach ($_POST as $key => $value) { $stmt -> bindValue(":$key", ${$key}, PDO::PARAM_STR); } 検索してみてもpdo文を自動作成するソースが見つからなかったため、 この方法はひょっとして非推奨なのでしょうか? 手動でも出来なくはない量なのですが、メンテナンス性や可読性のために挑戦してみました。
|
|