不能在pdo+odbc+Ms Sql数据库设置中使用prepare语句


Can't use prepare statement in pdo+odbc+Ms Sql db setting

我遵循了这里的说明

使用PDO, ODBC和FreeTDS从PHP访问Microsoft SQL Server

设置odbc

然后不知怎么的,我让它工作了,但不完全。如果我使用完整的查询语句,它返回

结果正确,但如果我稍后绑定数据,没有从DB端响应…我只是得到铬

"No Data Received"页。

Environment: PHP Version 5.3.2-1  ubuntu4.26
我代码:

$conn=new PDO("odbc:Driver=FreeTDS; Server=Mssql host; Port=1433;
 Database=dbname; UID=userid; PWD=pw");

如果我使用这个:

$sql="Select * from customer where email='abc@gmail.com'";
$stmt=$conn->prepare($sql);
$stmt->execute();
$row=$stmt->fetch(PDO::FETCH_ASSOC);
print_r($row);

从数据库中正确获取数据

但是如果我用这个

$sql="Select * from customer where email= ? ";
$stmt=$conn->prepare($sql);
$stmt->execute(array('abc@gmail.com'));
$row=$stmt->fetch(PDO::FETCH_ASSOC);
print_r($row);

我得到chrome"没有数据收到"与一个悲伤的脸页面图标。

我试着抓住那些代码,但是…在这种情况下没有帮助。

我不知道是我在odbc设置过程中错过了什么,还是别的什么。

实际上,我想知道你们用哪种驱动程序/方式来使用MS SQL DB(2008)在

中使用php

Linux (ubuntu)环境?我在开始时使用dblib(它有效),但在

之后

阅读更多,我发现PHP不建议人们使用dblib,他们认为我们应该使用

odbc,但它并没有真正起作用。

您的连接变量命名不同:

$conn=new PDO("odbc:Driver=FreeTDS; Server=Mssql host; Port=1433;
 Database=dbname; UID=userid; PWD=pw");

然后是

$stmt=$connNc->prepare($sql);