mysql_real_escape_string的调用,必须要求已经连接了mysql啊,否则报错。所以,请问mysql_real_escape_string工作时,是否会与服务器进行交互,由此带来性能上的影响?否则的话,为了安全的写入数据到数据库,只需mysql_real_escape_string就足够了?还需要其他几个类似函数吗,他们又适合在什么场合使用? 当我直接调用时mysql_real_escape_string,报 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established <?php echo mysql_real_escape_string("a'bc"); ?>
返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 string addcslashes ( string str, string charlist )
返回字符串,该字符串在属于参数 charlist 列表中的字符前都加上了反斜线。此函数对 \n、\r 等进行转义。
string mysql_real_escape_string ( string unescaped_string [, resource link_identifier] )
将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。mysql_real_escape_string() 并不转义 % 和 _mysql_escape_string
和 mysql_real_escape_string() 完全一样,除了 mysql_real_escape_string() 接受的是一个连接句柄并根据当前字符集转移字符串之外。mysql_escape_string() 并不接受连接参数,也不管当前字符集设定。
mysql_real_escape_string的调用,必须要求已经连接了mysql啊,否则报错。所以,请问mysql_real_escape_string工作时,是否会与服务器进行交互,由此带来性能上的影响?否则的话,为了安全的写入数据到数据库,只需mysql_real_escape_string就足够了?还需要其他几个类似函数吗,他们又适合在什么场合使用?
当我直接调用时mysql_real_escape_string,报
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established
<?php
echo mysql_real_escape_string("a'bc");
?>
我也提倡参数化的方式来做,不过在php+mysql中,碰到一个严重的问题,它的参数绑定是匿名的,且在无法确定参数个数时无法使用----bind_param函数的工作方式。看到一些人对bind_param封装,就干写死脆定义了10个或者20个最大绑定参数个数。总感觉很不爽。不知道楼上有好的解决方法吗?