PHP:不保存撇号

时间:2016-04-21 17:13:17

标签: php

我有一个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中做错了什么或者我应该使用什么来保存撇号?

注意:

我测试时

$messageI'm

1 个答案:

答案 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作为数据库。

无论如何,我强烈建议使用预准备语句而不是转义字符串。