我有一个php页面,可以将一些数据保存到我的数据库中。它适用于具有特殊字符(。,?!)的所有字符串,但它不适用于撇号(')。
这是我的php:
$message = trim(strip_tags($_REQUEST['message']));
$safe_variable = mysqli::escape_string($message);
$i_sql = "INSERT INTO tableName ( id_user, username, message) VALUES ( '".$id_user."', '".$username."', '".$safe_variable."')";
$i_res = mssql_query($i_sql);
我尝试过这条线路:
$safe_variable = mysqli::escape_string($message);
我已经读过我应该使用mysql_real_escape_string
,但不再支持它,我应该使用mysqli::escape_string
代替。
我在PHP中做错了什么或者我应该使用什么来保存撇号?
注意:
我测试时 $message
是I'm
。
答案 0 :(得分:2)
escape_string()
静态调用 mysqli::escape_string($message)
此外mssql_query($i_sql);
在这里没有任何意义,因为它看起来像是使用mysql作为db。
代码可以像这样修复:
// This is the object that represent the connection to the db
$conn = new mysqli( 'localhost', 'user', 'password', 'db_name');
$message = trim(strip_tags($_REQUEST['message']));
$safe_variable = $conn->escape_string($message); // fixed here
$i_sql = "INSERT INTO tableName ( id_user, username, message) VALUES ( '".$id_user."', '".$username."', '".$safe_variable."')";
$i_res = $conn->query($i_sql); // fixed here
以上,当然,假设您使用mysql作为数据库。
无论如何,我强烈建议使用预准备语句而不是转义字符串。