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

时间:2015-08-26 15:48:17

标签: 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'命令必须在它自己的行上。

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

1 个答案:

答案 0 :(得分:1)

只需将您的查询作为单独的query()来电运行。