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

时间:2014-04-04 04:16:53

标签: php pdo prepared-statement firebird

Firebird通过PDO的奇怪行为。

环境:

  • 在我的本地计算机(Ubuntu 12.04)上,所有工作正常。
  • 在远程计算机上(旧的Mandriva [内核2.6.33.7-server-2mnb])
        只有未命名的PDO声明才有效......
  • php5.3.14 on
  • 两个Firebird 2.5

当我告诉没有工作时,我的意思是:

  • SELECT * FROM Users WHERE username = ?array($username) - 工作
  • SELECT * FROM Users WHERE username = :uarray(':u' => $username) - 不是

(working =返回用户名字段等于$ 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);

1 个答案:

答案 0 :(得分:1)

我解决了一个问题,就是使用Mandriva包来源:

远程系统上的

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

感谢所有