Php PDO命名的已准备语句不起作用
通过PDO与Firebird的奇怪行为 环境: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=返回用户名字段等于
- 在我的本地机器(Ubuntu 12.04)上,所有操作都正常李>
- 在远程机器上(旧Mandriva[内核2.6.33.7-server-2mnb])
只有未命名的PDO语句有效李> - php5.3.14在两个
- Firebird 2.5在两侧
使用从username=?
的用户中选择*数组($username)
的用户中选择*不使用
从用户名=:u数组(':u'=>$username)
- 有人有过这种行为吗李>
- 我应该在哪里查找
版本? (我在phpinfo中只启用了Firebird/InterBase的PDO驱动程序)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错误报告显然不会被接受,因为他会被要求先升级他的旧版本。