2017-06-07 8 views
0

この問題は、データベースに次の文字を含むテキストを挿入できないように見えることがあります: '(例:It's)。私は以前にこの問題を抱えていましたが、シンボルを取り除いたばかりですが、今は本当に解決策が必要で、ウェブ全体やスタックオーバーフローがどこにもありません。まともな答えを見つけることができません。phpを使ってデータベースに 'symbol'という文字列を挿入できません

は、これが私のデータが表示されている方法です。

HTML

<textarea name="text_from_form"> 
     This is the kind of stuff I need and It's awesome (user input example) 
</textarea> 

PHP

<?php 

    $my_text = $_POST["text_from_form"}; 
    $my_text_new = htmlentities($my_text); 

    $sql = "INSERT INTO tableName (text) 
    VALUES ('$my_text_new')"; 
?> 

ERROR

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's awesome ')' at line 2 

ありがとうございました!

+0

を使用しているライブラリに依存するデフォルトのフラグ(ENT_COMPACT)、htmlentitees($text, ENT_QUOTES)または機能mysql_real_escape_string()またはmysqli_real_escape_string()を使用中に単一引用符'をエスケープしません。 。あなたのスクリプトは[** SQL Injection Attack **](https://stackoverflow.com/q/60174/5914775)の危険にさらされています。 [Little Bobby Tables](http://bobby-tables.com/)に何が起こったのか見てみましょう。 [入力をエスケープしている場合でも、安全ではない!](https://stackoverflow.com/q/5741187/5914775)[prepared parametersised statements](https://php.net/manual/en/mysqli.quickstart) .prepared-statements.php)を使用してください。 –

+0

@TomUddingあなたは多分私がしなければならないことの例を挙げることができますか?あなたが何を言っているのか理解できないからです... – CoderYordi

+0

'htmlentities()'が出ています。プリペアドステートメントを使うべきです - どのAPIを使ってデータベースに問い合わせていますか? 'mysql_ *'? 'mysqli_ *'? PDO? – Qirel

答えて

0

htmlentities()機能を使用すると、これが問題になることはありません準備パラメータ化ステートメントを使用している場合は、

関連する問題