$sql = "Declare @v1 varchar(5000) ";
$sql .= "Declare @v2 varchar(5000)";
$sql .= "Set @v1 = '";
$sql .= "<?xml version = \"1.0\"?>";
$sql .= " ";
$sql .= " ";
$sql .= "2016121201380 ";
$sql .= "订单 ";
$sql .= "2016-12-12 ";
$sql .= "00 ";
$sql .= "104179";
$sql .= "111 ";
$sql .= "13707165174 ";
$sql .= "
测试地址 ";$sql .= "测试 ";
$sql .= " ";
$sql .= "' ";
$sql .= "Set @v2 = '";
$sql .= "<?xml version = \"1.0\"?>";
$sql .= " ";
$sql .= " ";
$sql .= "14241 ";
$sql .= "金色 ";
$sql .= "90C ";
$sql .= "1 ";
$sql .= "188.00";
$sql .= " ";
$sql .= "' ";
$sql .= "Exec LW2DRP @v1,@v2";
try {
$stmt = $dbh->prepare($sql);
$stmt->execute();
} catch (Exception $e) {
echo $e->getMessage();
}
报错:
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 102 [Microsoft][SQL Server Native Client 11.0][SQL Server]' ' 附近有语法错误。 in C:\phpStudy\WWW\test.php on line 51
但是我把 echo htmlspecialchars($sql) 输出的代码,直接放到数据库去执行,是可以成功的。
Declare @v1 varchar(5000) Declare @v2 varchar(5000)Set @v1 = '<?xml version = "1.0"?> 2016121201380 订单 2016-12-12 00 104179111 13707165174
测试地址 测试 ' Set @v2 = '<?xml version = "1.0"?> 14241 金色 90C 1 188.00 ' Exec LW2DRP @v1,@v2已经解决。从 word文档粘贴过来的时候,肯定带上了特殊字符。手动重新打一遍就 OK