PHP 使用 PDO 方式连接 sqlserver ,拼接 的 sql 命令总是报错

onlyhotv2ex 2016-12-12 05:05:29
$sql = "Declare @v1 varchar(5000)";
$sql .= "Declare @v2 varchar(5000)";
$sql .= "Set @v1 = '";
$sql .= "<?xml version = \"1.0\"?>";
$sql .= "<Var1Data>";
$sql .= "<BodoOrder>";
$sql .= "<OrderNo>2016121201380</OrderNo>";
$sql .= "<Bodtype>订单</BodType>";
$sql .= "<xdate>2016-12-12</xdate>";
$sql .= "<DID>00</DID>";
$sql .= "<CID>104179</CID>";
$sql .= "<Contacter>111</Contacter>";
$sql .= "<Tel>13707165174</Tel>";
$sql .= "<address>测试地址</address>";
$sql .= "<BodNote>测试</BodNote>";
$sql .= "</BodoOrder>";
$sql .= "</Var1Data>'";
$sql .= "Set @v2 = '";
$sql .= "<?xml version = \"1.0\"?>";
$sql .= "<Var2Data>";
$sql .= "<BodoOrderDetails>";
$sql .= "<PID>14241</PID>";
$sql .= "<Color>金色</Color>";
$sql .= "<Size>90C</Size>";
$sql .= "<nQty>1</nQty>";
$sql .= "<nPrice>188.00</nPrice>";
$sql .= "</BodoOrderDetails>";
$sql .= "</Var2Data>'";
$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]'' 附近有语法错误。

但是我把命令输出以后直接放到数据库是可以执行的。
...全文
104 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
onlyhotv2ex 2016-12-12
  • 打赏
  • 举报
回复
已经解决。从 word文档粘贴过来的时候,肯定带上了特殊字符。手动重新打一遍就 OK

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧