$sql = "Declare @v1 varchar(5000)
";
$sql .= "Declare @v2 varchar(5000)";
$sql .= "Set @v1 = '";
$sql .= "";
$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 .= "";
$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 = '
2016121201380
订单
2016-12-12
00
104179 111
13707165174
测试地址
测试
'
Set @v2 = '
14241
金色
90C
1
188.00
'
Exec LW2DRP @v1,@v2
已经解决。从 word文档粘贴过来的时候,肯定带上了特殊字符。手动重新打一遍就 OK
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你保存的时候貌似没htmlspecialchars吧