2016-10-18 4 views
0

現在、phpを使用してSQLデータベースにデータを送信するhtmlフォームをテストしています。私が直面している問題は、特殊文字がフォームを壊し、データベースを更新しないということです。私はすべての特殊文字をテストしていませんが、主に`'が犯人です。私はmysql_escape_string、preg_replaceとadd_slashesを成功させてみました。私は何が欠けていますか?PHPを使用したSQLデータベース用のHTMLフォーム入力の準備

$description = preg_replace('/[^A-Za-z0-9\ %&$=+*?()!.-]/', ' ', $_POST['description']); 
$description = preg_replace("/[\n\r]/"," ",$description); 

// Items Insert 
foreach ($item as $index=>$value) { 
$sqlItems .= " 
    INSERT INTO quote_items (quote_id, item, description, amount, gst) 
    VALUES ('$last_id', '$item[$index]', '$description[$index]', '$amount[$index]', '$gst[$index]'); 
"; 
} 

ありがとうございます!

+0

メイト、常にあなたの質問にコードと結果を含める!このようにして、どのコードを使用しているのか推測できません。 –

+0

申し訳ありません、今追加します。標準のphp関数がないと仮定していました。 – Azyrus

答えて

0

を言っていますが、これらの2つの文字が

$sqlItems .= ' 
    INSERT INTO `quote_items` (quote_id, item, description, amount, gst) 
    VALUES ("'.$last_id.'", "'.$item[$index].'", "'.$description[$index].'", "'.$amount[$index].'", "'.$gst[$index].'"); 
'; 

EDITを保存できるようにする必要があります。申し訳ありませんが引用符を逆にしました

+0

こんにちはDevFx、ありがとうございました。それは正確に何をし、なぜそれは汚いのですか?私は今、 '' - = {} | [] \: "; '<>?、。/ symbolsをフォームの中断なしで使うことができます。フォームは、一部の記号ではなく他の人に破壊されている理由に、F 〜 をf〜!節約 をf〜!@ fは〜!@#保存されません保存し をf〜!@#$ がFで保存されません〜節約!@#$%は保存しません ## asdf#asdf保存する @#$保存する – Azyrus

+0

こんにちはAzyrus私はPDOやフレームワークの種類が好きなので、私はそれを汚いと呼んでいます。 ://php.net/manual/en/pdo.prepared-statements.php)。 – DevFX

0

あなたはDBコールを投稿できますか? これらの2文字は、特にDB呼び出しで競合するように見えます。

`は通常表または列名 でラップされ、 'は通常値をラップします。

これらの両方は、問題を引き起こすが、コードなしでそのハードあなたは(汚い少し)、これを試すことができ

+0

こんにちはDevFX、私は今編集しました。私は標準的なphp関数があると仮定しました。ありがとう。 – Azyrus

+0

最初に大文字小文字が区別されます。各値の終わりの引用符となり、DBコールが混乱してしまいます。 – DevFX

関連する問題