PHP SQL Server删除用户输入数据的单引号


PHP SQL Server Removing Single Quotes from user entered data

我有一个PHP表单,用户可以在其中输入数据。当他们这样做时,他们使用特殊字符,如单引号。

这将防止它们的数据被放入SQL表中。我没有使用MySQL。我正在使用SQL Server.

我该如何解决这个问题?

我的代码是:
include'dbcon.php';
//connectiontothedatabase
$dbhandle=mssql_connect($myServer,$myUser,$myPass)
or die("Couldn't connect to SQL Server");
//selectadatabasetoworkwith
$selected=mssql_select_db($myDB,$dbhandle)
or die("Couldn't open database");
session_start();
$surnum=$_SESSION['surnum'];
$email=$_SESSION['email'];
$site=$_SESSION['site'];
$query="INSERT INTO ZSURVEYA(SURNUM_0,EMAIL_0,A_0,A_1,A_2,A_3,A_4,A_5,A_6,A_7,A_8,A_9,A_10,A_11,A_12,A_13) VALUES ('$surnum','$email',convert(varchar(max),'$_POST[Q_0]'),convert(varchar(max),'$_POST[Q_1]'),convert(varchar(max),'$_POST[Q_2]'),convert(varchar(max),'$_POST[Q_3]'),convert(varchar(max),'$_POST[Q_4]'),convert(varchar(max),'$_POST[Q_5]'),convert(varchar(max),'$_POST[Q_6]'),convert(varchar(max),'$_POST[Q_7]'),convert(varchar(max),'$_POST[Q_8]'),convert(varchar(max),'$_POST[Q_9]'),convert(varchar(max),'$_POST[Q_10]'),convert(varchar(max),'$_POST[Q_11]'),convert(varchar(max),'$_POST[Q_12]'),convert(varchar(max),'$_POST[Q_13]'))";
mssql_query($query);

要回答您的问题,请使用addslashes()函数但是不要使用它,原因如下:

  1. 在直接使用SQL之前没有对数据进行消毒
  2. 你不应该把一个变量值直接放入SQL(查找SQL注入)
  3. 你应该使用准备好的语句,我确信PDO支持SQL,所以我会在php.net/pdo上查找PDO