2013-10-09 4 views
0

Этот запрос работает при запуске из командной строки (sqlcmd). Я не могу понять, как заставить его работать в php-скрипте.Как сделать sql-запрос с переменными работающими с php?

exec sp_executesql N'select N2."Name" from (("dbo"."BasicAnimal" N0 left join "dbo"."AnimalGroup" N1 on (N0."Group" = N1."OID")) left join "dbo"."AbstractGroup" N2 on (N1."OID" = N2."OID"))where (N0."GCRecord" is null and (((N0."IsCulled" = @p0) and N0."ExitDate" is null) or (not (N0."Group" is null) and N0."ExitDate" is null)))',N'@p0 nvarchar(8)',@p0=N'False' 
go 

Если я выгрузить приведенный выше запрос из сценария PHP с чем-то вроде основным:

select * from dbo.AnimalGroup 

это работает ...

Проблема заключается в том, что сам запрос содержит одинарный и двойной котировки, так что я не могу создал переменную PHP как:

$sql='query goes here' 

или

$sql="query goes here" 
+0

Посмотрите на примеры в PHP руководстве: http://php.net/manual/en/mysqli.query.php –

+0

... какие ошибки вы получаете с помощью верхнего запроса, когда вы запускаете его через PHP? Возможно, вам придется переписать его, чтобы быть более дружелюбным. –

+0

каждый раз, когда кто-то забывает использовать Markdown, Джон Грубер умирает немного внутри, http://en.wikipedia.org/wiki/Markdown – joschua011

ответ

0

Вы можете сделать это:

$sql = 'single "dobuble" \' again single quotes\' ' 
+0

Спасибо. Сброс одиночных кавычек, содержащихся в запросе, дает мне эту ошибку: Array ([0] => Array ([0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] = > [Microsoft] [Исходный клиент SQL Server 11.0] [SQL Server] Неверный синтаксис рядом с «go». –

+0

Работало ?. –

+0

Нет, это не сработало. Ошибки говорят «неправильный синтаксис около« идти » –