如何在SQL Server中转义单引号和双引号?

时间:2014-11-16 15:11:54

标签: php sql-server

我正在使用SQL 2000。 我怎样才能逃避单引号;并且在没有得到SQLi的情况下双引入查询?

PHP:
$Username = "s'ql'fp".'"ffo"t';

SQL:
$Query = "INSERT INTO Users (Username, Password) VALUES (".$Username.", '432432')";
mssql_query($Query);

抱歉我的英文不好:S

2 个答案:

答案 0 :(得分:1)

您必须将字符串常量括在单引号中,并在SQL中将所有单引号括起来:

PHP:
$Username = "s'ql'fp".'"ffo"t'";

SQL:
$Query = "INSERT INTO Users (Username, Password) VALUES ('"
          . str_replace("'", "''", $Username),
          . "', '432432')";
mssql_query($Query);

str_replace("'", "''", $Username)将是"s''ql''fp".''"ffo"t''",我。即所有单引号加倍。这不会更改$Username变量,只会更改用作SQL语句的字符串。

也许,您也会为密码执行此操作(如果它不是您知道不包含引号的字符串,就像您在此处使用的文字密码一样)。

答案 1 :(得分:-2)

插入数据的mysqli_real_escape_string()应该可以解决问题。

你也应该把你的varchar()放在括号中,如果你插入VALUES(SOME STRING),它就会逃脱帮助,这主要是用整数作为。