Php 带有Odbc驱动程序的PDO-仅使用prepare()查询失败

Php 带有Odbc驱动程序的PDO-仅使用prepare()查询失败,php,sql-server,iis,pdo,Php,Sql Server,Iis,Pdo,我们要总结的是一个PDO连接,我们首先准备一个查询,然后用几个参数执行它 $slug1 = "store1"; $slug2 = "it"; $o = new PDO('odbc:Store_tasks'); $stmt = $o->prepare("SELECT BLALALALA.....JOINS BLALALA WHERE S.slug = ? AND P.slug = ?"); $result = $stmt->execute(array($slug1, $slug2))

我们要总结的是一个PDO连接,我们首先准备一个查询,然后用几个参数执行它

$slug1 = "store1";
$slug2 = "it";

$o = new PDO('odbc:Store_tasks');
$stmt = $o->prepare("SELECT BLALALALA.....JOINS BLALALA WHERE S.slug = ? AND P.slug = ?");
$result = $stmt->execute(array($slug1, $slug2));
这失败了,但我发现如果我使用:

$o->query("SELECT BLALALALA.....JOINS BLALALA WHERE S.slug = 'store1' AND P.slug = 'it'");
使用我自己的!构建查询字符串!。不幸的是,我无法远程访问此信息或确切的错误消息;但我需要一些想法,一旦我到了那里,什么可能是错误的尝试修复这个问题

这些是Windows/MS Sql服务器。完全不是我的喜好或经验。 可能是charset?将DSN设置为类似

'odbc:Store_tasks&charset=utf8'
或者使用:

PDOStatement::bindParam to set up some params?
问题是,在我们的测试服务器上,也在Windows/MSSql上,它可以正常工作,没有任何问题。可能会有不同


我还可以尝试其他建议吗?

您必须使用bindParams!来真的这可能是区别吗?不幸的消息如果是真的,那只是一个例子。。。有不止一个查询使用它,fml@Ron您应该将连接设置为显示错误,并尝试使用命名占位符。值得一试,因为您的代码应该可以工作