私はまだ、自分のコードをできるだけ小さく、効果的に書いています。JS-> PHP-> mySQLの値をループするのは悪い方法ですか?
だから私の定期的なアプローチHTMLフォームからMySQLへの挿入データが でjQueryを使って入力値をフェッチしている間:
var formdata = {};
$('.formdata').each(function(){
formdata[ $(this).attr('name') ] = $(this).val();
});
は、AjaxとPHPにそれを送信します。
$.ajax({
url: 'file.php',
method: 'post',
data: {formdata: formdata},
success: function(result){
console.log(result)
}
});
グラブPOSTと配列に入れて:
$params_array = array(
':artNr' => $_POST['formdata']['artNr'],
':etc' => $_POST['formdata']['etc'],
);
最後にそれをmに入れますYSQL:
$query = "INSERT INTO table SET artNr = :artNr, etc = :etc";
try{
$stmt = $db->prepare($query);
$result = $stmt->execute($params_array);
}
catch(PDOException $ex){
die("Failed to run query: " . $ex->getMessage());
}
私の質問は今ある:
が配列へのPOSTからの値でループに悪いアプローチですか?尋ねるため
foreach($_POST['formdata'] as $name => $value){
$params_array[$name] = $value;
}
理由は、私はあなたが私のJSにものを送ることができます場合は、コンソールからとかハッキングん「[] FORMDATA」知っているドントということでしょうか?
私は、HTMLフォームに存在するものを私のデータベースにループしていることを意味しています。私の "params_array"にハードコーディングされたキーがなければ..
マビーには私が気づいていないさらに多くのセキュリティホールがありますか?
私はPDOがSQLインジェクションからかなり安全であることを知っていますか?
PDOはSQL Injectionsから保護されていません。 'mysqli_'ドライバでも同じことをすることができます。それは安全です。私はこれがあなたの質問に全く答えないことを知っています、ちょっとしたメモです。 – Twinfriends
いくつかの考えでは、 'file.php'が返すと予想されるデータ型を正確に記述する必要があります。あなたの '$ .ajax'プロパティ' 'dataType:" json "'を設定し、 '' file.php'の中で結果を返すようアドバイスします: 'echo json_encode($ result-> fetchAll() )); ' –
@AnwarNairi echo json_encodeで返すためにdataTypeをJSONに設定する必要はありません。私はすでにこれを行い、それは動作します。しかし、dataTypeを使用する方が安全ですか? –