MySql と PHP のバックスラッシュについて質問があります。テスト用の簡単なコードを書きます!
include "src/db.inc.php";
$name="licon's";
$name=addslashes($name);
$sql="insert into test values('$name')";
mysql_query($sql);
$sql1="select * from test";
$rs=mysql_query($sql1);
$row=mysql_fetch_assoc($rs);
echo $row['name'];
コードが表示されているように、一重引用符を含む文字列をテーブルに挿入したいと考えています。
1.文字列をエスケープする必要があります。ここでは関数を使用しますaddslashes()
。はこのよう$name
なものになります " licon\'s
"。
2.しかし、テーブルに挿入し$name
てmysqlコンソールで選択すると、関数によって追加されたバックスラッシュがaddslashes
消えます。次のように:
mysql> select * from test;
+---------+
| name |
+---------+
| licon's |
+---------+
3. PHP スクリプトでフィールド ' name
' を選択して印刷すると、バックスラッシュも消えてしまいます。
次のように:
$sql1="select * from test";
$rs=mysql_query($sql1);
$row=mysql_fetch_assoc($rs);
echo $row['name'];
======
print: licon's
addslashes()
関数が変数にバックスラッシュを追加することを知りたいです$name
。バックスラッシュが消えるのはなぜですか?