まずは
このため$_POST
、クエリに値を含めないでください。PDOまたはMySQLiを使用して、それらをパラメータ化または準備します。(また、その構文は文字列に含めるには無効であるため、リテラル文字列をフィールドに追加しようとしています)'$_POST[var]'
INT
ここでの本当の問題は、MySQL を使用する必要があるため、使用していないことです ( RDBMS。次のセクションを参照してください。
関係
外部キーを検索します。それらはテーブルをリンクするため、更新のたびにテーブルの内容を別のテーブルに挿入することは決してありません。これを行うには、ユーザーのテーブルに行の ID を挿入してから、 を使用する必要がありますJOIN
。
実際の挿入
一度に複数の値を挿入するには、次の構文を使用します。
INSERT INTO
`table` (`col1`, `col2`) VALUES
(:val1, :val2), (:val3, :val4)
そして、この配列を作成します:
Array(
":val1" => $val1,
":val2" => $val2, // etc.
);
これはPDOを使用しています。それを調べて、それを愛することを学びましょう。StackOverflow には、例と時折の落とし穴を含むリソースがたくさんあります。
入門
$params = array(
":ampaid" => $_POST["ampaid"], // tip: use quotes for array keys...
":rcamo" => $_POST["rcamo"],
":userchar" => $_POST["userchar"],
":totamo" => $_POST["totamo"]
);
$db = new PDO($connection_info, $user, $pass); // from a config file
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // throw errors
$sql = "INSERT INTO `payment` (`ampaid`, `rcamo`, `userchar`, `totamo`) " .
"VALUES (:ampaid, :rcamo, :userchar, :totamo)";
$prepare = $db->prepare($sql); // prepare query
$prepare->execute($params); // execute query using bound parameters
エラー処理は宿題としてお任せします。(ヒント: try-catch
)
SELECT
クエリの結果を使用INSERT
して、同じ呼び出しでクエリを設定することはできません (間違っている場合は修正してください。それでも、それはひどい考えです)。
最後に
サニタイズされていない、または準備されていないユーザー入力を挿入しないでください。これが本当の銀行のアプリケーションである場合 (私は疑いがあります... うまくいけば)、これで自分のお金を信頼するのは非常に怖いでしょう. 実際、私は避けられない訴訟を通じてお金を稼ぎたいので、注意して、受け取ったユーザー入力を完全にサニタイズしてください.