【问题标题】:php: execute query with PDO OCIphp:使用 PDO OCI 执行查询
【发布时间】:2013-09-24 10:44:25
【问题描述】:

我正在尝试执行简单的脚本,但无法获得结果。

$id = $_GET['contract'];
$dsn = 'oci:dbname=xxx.xxx.xx';
$user = 'xxxx';
$pass = 'xxxx';

try{
    $conn = new PDO($dsn, $user, $pass);

    $stmt = $conn->prepare('SELECT * FROM DOGOVOR.CONTRACT CTR WHERE CTR.CONTRACTORNUMDOC = ?');
    $stmt->execute(array($id));
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
}
catch (PDOException $e){
    echo $e->getMessage();
}

var_dump($row);

结果 - 布尔(假)。无错误。 如果我尝试仅查询“SELECT * FROM DOGOVOR.CONTRACT”,那么一切正常。需要说 $id 取西里尔值。可能是字符集或其他问题吗? 甲骨文 9i。 PHP 5.2。

【问题讨论】:

    标签: php oracle pdo


    【解决方案1】:

    试试这个查询:

    SELECT CTR.* FROM DOGOVOR.CONTRACT CTR WHERE CTR.CONTRACTORNUMDOC = ?
    

    你错过了CTR.*

    或更简单:

    SELECT * FROM DOGOVOR.CONTRACT WHERE CONTRACTORNUMDOC = ?
    

    【讨论】:

    • 您确定存在CONTRACTORNUMDOC = $id 的记录吗?
    • 对我有奇怪的行为。如果我得到 /index.php?contract=ИД-2007-ФКс0-218 那么我得到 bool(false) 结果。如果我在代码中写 $id = 'ИД-2007-ФКс0-218' ,那么我会从 base 得到结果。
    • @user837758: 奇怪,我不知道 :(
    • 100% 字符集问题,因为如果我回显 2 值:从​​ $_GET 和内部 $id 我得到不同字符集的差异值
    • 字符集问题。 iconv 帮助了我。
    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2011-06-09
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多