在查询数据库时,很多时候我们会在查询的条件中包含反斜线(/),双引号("),单引号(')。这三种符号在SQL语句中通常都有着特殊的含义,不能直接使用。
mysql_escape_string()可以帮我们解决这个问题。
假设这样一个例子:客户端有一个HTML表单,表单里面有一个input输入框,名称为item。当使用者在item输入框输入如下内容:Zak's Laptop,然后点击提交按钮。服务端在收到这个请求时该如何处理呢?
不正确的处理方式:
<?php $item = $_REQUEST[‘item’]; $sql_query = "SELECT * FROM admin_items WHERE item_name = '$item'"; printf ("SQL: %s\n", $sql_query); ?>
输出结果:
SQL: SELECT * FROM admin_items WHERE item_name = 'Zak's Laptop'
从结果可以看书,输出的SQL很明显就是错误的。正确的处理方式:
<?php $item = mysql_escape_string($_REQUEST[‘item’]); $sql_query = "SELECT * FROM admin_items WHERE item_name = '$item'"; printf ("SQL: %s\n", $sql_query); ?>
输出结果:
SQL: SELECT * FROM admin_items WHERE item_name = 'Zak\'s Laptop'
可以看出,mysql_escape_string()函数为$item里面的单引号在前面加了一个转义反斜线字符。