2016-12-02 14 views
1
<div><select class="form-control"name="old_name"></select></div> 
<div><input class="form-control" type="text" name="name" pattern="^[\w\- ]+$"/></div> 

選択タグのすべての項目は、データベースから情報を更新するために "innerHTML"を使用してJavaScriptから生成されます。PHPのsqlite3からのデータをデータベースのselect(データベースから)から選択

POSTメソッドを使用するHTML形式の要素(old_name、name)は2つあります。 "old_name"を "name"でPHPに置き換えたいと思います。ここに私のPHPコードです。

$orignal_name = $_POST['old_name']; 
$q = $db->prepare("UPDATE categories SET name = ? WHERE name = ". $orignal_name); 
return $q->execute(array($_POST['name'])); 

しかし、動作しませんでした。私は "old_name"をエコーし​​ようとし、結果は "NaN"です。

+1

なぜ1つの 'name'にパラメータを使用し、2番目に' 'name 'を連結しますか? – RiggsFolly

+0

である。 HTMLの入力です。パラメータとして設定すると、注入を防ぐことができます。 2番目の値はselectタグで固定されます。 – Hugo

+1

POSTEDデータを簡単に偽装することができます。 GETやPOSTからのスクリプトに入ってくるデータは安全だとは思わない – RiggsFolly

答えて

1

私はあなたがこれらのoccurances両方が$_POSTに存在し、データが含まれていることを確認していると仮定あなたの実際のエラーは、あなたが引用符で$original_name連結をラップしていなかったということですが、これは

$q = $db->prepare("UPDATE categories SET name = ? WHERE name = ?"); 

return $q->execute(array($_POST['name'], $_POST['old_name'])); 

より良いアプローチでしょうこのコードを取得する前に

+0

もう1つのパラメータを追加した後にAJAXエラーが発生します。私はエラーがどこにあるのかを確認し、解決策を受け入れるかどうかを決定しています。お返事ありがとう – Hugo

+0

OKですが、あなたの質問はAJAXとは何の関係もありません。 – RiggsFolly

+0

実際にあなたが見せてくれるHTMLを見ると、 '