2016-07-27 7 views
0

私はHTML、PHP、MySQLを使用して基本的なウェブサイトを持っています。PHP - HTMLの入力文字列がエスケープシーケンス文字列としてMySQLに格納されています

HTML入力:

C# - Developer's Guide "LIMITED EDITION" 

はPHPで

次のようになります。MySQLでは

C# - Developer\'s Guide \"LIMITED EDITION\" 

私が使用してPHPで
C# - Developer\'s Guide \"LIMITED EDITION\" 

if(empty($_POST['book_title'])) { 
    $errors['book_title'] = TRUE; 
} else { 
    $book_title = mysqli_real_escape_string($link, trim($_POST['book_title'])); 
} 

$query1 = "INSERT INTO book(title) VALUES(?)"; 
if(!$errors && mysqli_stmt_prepare($stmt,$query1)) 
{ 
    mysqli_stmt_bind_param($stmt, "s", $book_title) or die("Bind param failed"); 
    if(!mysqli_stmt_execute($stmt)) { 
    $errors['table_book'] = TRUE; 
    } 
} else { 
    $errors['table_book'] = TRUE; 
} 

EDIT: magic_quotesがオフになっています。私はPHP 7.0.3を使用しています。

私のHTML入力をそのままPHPやMySQLにもどすには?

私が助けることができれば、magic_quotes(ブログのどこかで聞いたこと)とは何ですか?

私に他の情報が必要な場合はお問い合わせください。助けて。上記のコメントや他のSOクエリの「フィル」で示唆したように

+0

$エラー['book_title'] = TRUE; '本当はそうではありません。 – user5173426

+0

@ user5173426 [$ errors = array();として宣言されています。 ]私はAJAXレスポンスのエラーリストを設定しています。それは私の実際の問題ではありません。一重引用符と二重引用符を使用して文字列を格納すると(HTML入力経由で)問題が発生します。あなたが私を助けてくれることを望みます。 –

+0

最初に私はPDOのprepared statements(http://stackoverflow.com/documentation/php/275/using-a-database)を使用することをお勧めします - あなたのためにエスケープする値を処理します。次に、このデータを送信するために使用している実際のフォームであるHTML入力フィールドを確認できますか?それが単なる標準入力でPHPの値を取得した場合、文字列(引用符はエスケープされていない)でなければならないので、どのように/どこからエスケープされるのかははっきりしません。 – WOUNDEDStevenJones

答えて

0

(で検索するとき「私は準備されたステートメントでmysqli_real_escape_string使用する必要があります」)、

のみを使用し準備書ではなく、mysqli_real_escape_string()両方の組み合わせ

関連する問題