私はかなりイライラしています。たとえば、O'Connor のように、一重引用符で囲んだ名前をデータベースに挿入できるようにしたいと考えています。
したがって、DB に挿入するときは、次のようにします。
$lname = mysql_real_escape_string($_POST['lname']);
そして、DB に $lname を挿入します。
DB にある場合は、O\'Connor として表示されます。
したがって、Web アプリケーションでその姓を思い出すには、次のようにする必要があります。
$lname = stripslashes($r["lname"]);
これはすべてうまくいくようです。ただし、姓を検索して結果を表示する検索機能があります。検索するときは、結果を得るために O\'Connor を検索する必要があります。
ご覧のとおり、検索した後、テキストボックスには検索されたばかりの値が (セッションを使用して) 自動的に保存されます。だから私のコードはこれです:
$search = mysql_real_escape_string($_GET['search']);
$_SESSION['search'] = $search;
前に言ったように、検索するときは「O\'Connor」を使用する必要があり、検索後、テキスト ボックスの値は「O\\\\'Connor」になります。
これを理解しようとするのはイライラします。私が間違っていることを誰かが知っていますか?ありがとう!
編集:
魔法の引用符に関する私のphp5.iniファイルは次のとおりです。
; Magic quotes
;
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
ただし、私のサイトは GoDaddy でホストされており、ファイルを編集する権限がありません :(