【问题标题】:How to make a sql query with variables work from php?如何从 php 中使用变量进行 sql 查询?
【发布时间】:2013-10-09 01:10:58
【问题描述】:

从命令行 (sqlcmd) 运行时,此查询有效。我不知道如何使它在 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"

【问题讨论】:

  • 查看 PHP 手册中的示例:php.net/manual/en/mysqli.query.php
  • ...当您通过 PHP 运行顶级查询时,您遇到了哪些错误?您可能需要重写它以使其更友好
  • 每当有人忘记使用 Markdown 时,John Gruber 就会在内心深处死去,en.wikipedia.org/wiki/Markdown
  • 我知道这是一个非常丑陋的查询。我不得不使用数据库跟踪程序来捕获它。我是 sql 新手,这是我弄清楚如何从数据库中获取所需信息的唯一方法。

标签: php sql sql-server sqlsrv


【解决方案1】:

你可以这样做:

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

【讨论】:

  • 谢谢。转义查询中包含的单引号会给我这个错误: Array ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] = > [Microsoft][SQL Server Native Client 11.0][SQL Server]'go' 附近的语法不正确。
  • 不,没有用。它错误地说“'go'附近的语法不正确”
  • 好吧,这是唯一的选择,我帮不了你了。
  • GO 不是一个有效的 SQL 语句,它是一个批处理分隔符,在 PHP 中执行时应该从查询中删除它,它会起作用。
猜你喜欢
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 2015-09-17
  • 2020-04-28
  • 2021-10-27
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多