2014-04-04 91 views
-1

通過PDO與Firebird發生奇怪的行爲。PDO名爲準備好的語句不起作用

環境:

  • 在我的本地機器(Ubuntu的12.04)都正常工作。
  • 在遠程計算機(舊的Mandriva [內核2.6.33.7-服務器2mnb])
    只有無名PDO報表工作...
  • php5.3.14上都
  • 火鳥2.5

    當我告訴沒有奏效,我的意思是:

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

    (工作=返回與用戶名字段用戶等於$用戶名值)

    問題:

    • 有這種行爲任何人的經驗?
    • 我應該在哪裏尋找pdo版本? (我只有PDO驅動程序火鳥/的InterBase在我的phpinfo啓用

    感謝

    這裏是我的測試代碼:

    $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); 
    
  • +2

    後的代碼,而不是一些草圖 –

    +0

    是否PDO ::的setAttribute(PDO :: ATTR_EMULATE_PREPARES,真正的);對此有什麼影響? – Ivarpoiss

    +0

    '當我說不工作時,我的意思是' - 你應該指什麼特別不行,詳細解釋它,而不是隻用一個三個字母的單詞「不」。 –

    回答

    1

    我解決一個問題,與Mandriva軟件包源:

    urpmi在遠程系統上已配置編輯到2010年的一些本地來源
    責備我們的管理員)
    我刪除此來源,重新安裝PHP和pdo從遠程軟件包源,現在所有的作品!
    我很開心:)

    感謝所有