PHP PDO:SQLSTATE [HY000]:常规错误:-303动态SQL错误SQL错误代码= -303字符串转换错误

时间:2014-03-06 12:47:32

标签: php pdo firebird firebird1.5

我使用PHP5.5的PDO库连接Firebird 1.5数据库,代码如下

public function getProductByKod($kod)
{
    $exec = $this->getPdo()->prepare(
        "SELECT KOD, NEV, CICSOP, AR0, AR1 FROM CIKK WHERE KOD = :KOD"
    );
    $exec->bindParam(':KOD', trim($kod), \PDO::PARAM_STR, 15);
    $exec->execute();
    return $exec->fetch();
}

$kod是一个字符串,火鸟列KODVARCHAR(15)

如果我在$kod变量中写了一个字符串,它会给我这个错误:

PDOException: SQLSTATE[HY000]: General error: -303 Dynamic SQL Error SQL error code = -303 conversion error from string 

当变量为空时,或者它的整数有效。

我不知道为什么会这样做。

编辑: KOD column in DbVisualizer

KOD column in terminal

EDIT2:我在Windows服务器上安装了FBscanner并观察了向服务器发送了什么样的SQl,我发现SQL不同了!

SELECT AZON, CEG, ELONEV, VEZNEV, KERNEV, BEOSZT, HIVTEL, HIVTEL2, FAX, EMAIL, MOBIL, CEGIRSZ, CEGVAROS, CEGUTCA" FROM CEGTEL WHERE AZON = 'teszt'

这完全是一个不同的SQL!这来自这个功能:

public function getPartnerConnectionsbyAzon($id)
{
    $exec = $this->getPdo()->prepare(
        "SELECT AZON, CEG, ELONEV, VEZNEV, KERNEV, BEOSZT, HIVTEL,"
        . "HIVTEL2, FAX, EMAIL, MOBIL, CEGIRSZ, CEGVAROS, CEGUTCA"
        . " FROM CEGTEL WHERE AZON = :AZON"
    );

    $exec->bindParam(':AZON', $id, \PDO::PARAM_INT);
    $exec->execute();
    $return =  $exec->fetch();

    $exec->closeCursor();

    return $return;
}

我读到一些司机需要关闭参数,这就是为什么我把closeCursor放在那里但它仍然不起作用!

0 个答案:

没有答案