php - 将 PHP 字符串作为 SQL 命令传递并保留换行符

标签 php mysql sql-server stored-procedures pdo

我正在尝试运行 SQL 存储过程,并使用 PHP 的 PDO 类 将执行命令传递给服务器。这是我现在的脚本:

$db = new PDO("dblib:dbname=databaseName;host=hostName", databaseUser, databasePassword);
$query = "
    USE [thisDatabase]
    GO
    DECLARE @return_value int
    EXEC    @return_value = [dbo].[thisSproc]
            @State = 'GA',
            @Type = 'Counseling',
            @PVCampusVueCode = NULL
    SELECT  'Return Value' = @return_value
    GO";
$stmt = $db->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

请注意,当直接在数据库本身上运行时,该查询会正确无误地返回结果。

但是,当我使用我的 PHP 脚本运行它并解析结果时,我在“GO”一词附近收到语法错误(SQL 错误 102)。结果证明这是因为命令作为单行传递给 SQL 服务器,没有换行符。所以,它最终看起来像这样:

USE [thisDatabase] GO DECLARE @return_value int EXEC @return_value = [dbo].[thisSproc] @State = 'GA', @Type = 'Counseling', @PVCampusVueCode = NULL SELECT 'Return Value' = @return_value GO

这是一个问题,因为显然“GO”命令必须在它自己的行上。

我四处寻找解决方法,但找不到。如何保留换行符以便正确执行查询,或者以其他方式解决问题?

最佳答案

只需将查询作为单独的 query() 调用运行即可。

关于php - 将 PHP 字符串作为 SQL 命令传递并保留换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231154/

相关文章:

php - 限制php中的文本长度并提供 'Read more'链接

mysql - CloudSQL 数据库定期崩溃(内存不足)

email - 将电子邮件地址插入表格字段

sql - SQL Server 触发器中的 IF UPDATE()

sql - 如何在 SQL Server 上计算以 2 列作为参数的表中的值的数量?

php - 如何在 PHP 中从 PDF 表单中提取字段值

php - 将数据库中的值放入 '$string' 中

php - 如何获得最快的MySQL结果?

php - 包含@的请求不起作用

java - 在握手期间检索公共(public)服务器证书 key