Php PDO命名的已准备语句不起作用

Php PDO命名的已准备语句不起作用,php,pdo,prepared-statement,firebird,Php,Pdo,Prepared Statement,Firebird,通过PDO与Firebird的奇怪行为 环境: 在我的本地机器(Ubuntu 12.04)上,所有操作都正常 在远程机器上(旧Mandriva[内核2.6.33.7-server-2mnb]) 只有未命名的PDO语句有效 php5.3.14在两个 Firebird 2.5在两侧 当我告诉你没有工作时,我的意思是: 从username=?使用数组($username)的用户中选择* 使用数组(':u'=>$username)从用户名=:u的用户中选择*不 (worked=返回用户名字段等于

通过PDO与Firebird的奇怪行为

环境:

  • 在我的本地机器(Ubuntu 12.04)上,所有操作都正常
  • 在远程机器上(旧Mandriva[内核2.6.33.7-server-2mnb])
    只有未命名的PDO语句有效
  • php5.3.14在两个
  • Firebird 2.5在两侧
当我告诉你没有工作时,我的意思是:

  • 从username=?
    使用
    数组($username)
    的用户中选择*
  • 使用
    数组(':u'=>$username)
    从用户名=:u
    的用户中选择*不
(worked=返回用户名字段等于$username值的用户)

问题:

  • 有人有过这种行为吗
  • 我应该在哪里查找
    pdo
    版本? (我在phpinfo中只启用了Firebird/InterBase的PDO驱动程序)
谢谢

这是我的测试代码:

$user = 'alex';
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$sql = 'SELECT * FROM Users WHERE username = :u';
$st = $pdo->prepare($sql);
$st->execute(array(':u' => $user));
$rows = $st->fetchAll(PDO::FETCH_ASSOC);
print_r($rows);

我解决了一个问题,是Mandriva软件包来源:

远程系统上的urpmi已配置为2010年的某个本地源
归咎于我们的管理员)
我删除这个源代码,从远程包源代码重新安装php和pdo,现在一切正常
我很高兴:)


多亏了所有的

Post代码,没有一些sketchDoes PDO::setAttribute(PDO::ATTR_EMULATE_PREPARES,true);这有什么影响吗?
当我告诉你不工作时,我的意思是
-你应该指那些特别不工作的东西,详细解释它,而不是只用一个三个字母的词“不”.
PDO::ATTR\u EMULATE\u PREPARES
不会更改anything@MarkRotteveel错误报告显然不会被接受,因为他会被要求先升级他的旧版本。