【问题标题】:Select with where param in php and oracle在 php 和 oracle 中使用 where 参数选择
【发布时间】:2018-04-13 16:21:16
【问题描述】:

我正在通过 PHP 和 Oracle 选择 where,当我得到参数时发生错误:

警告:oci_execute(): ORA-00911: 第 52 行 C:\xampp\htdocs\projeto\includes\Read.php 中的无效字符警告:oci_fetch_array(): ORA-24374: 在获取或执行之前定义未完成并在线获取 C:\xampp\htdocs\projeto\index.php

如果我通过直接参数正常工作,如注释行,它工作。

public function readAnexos($CDLICITACAO) {

    try {
        //$id = '012103';
        $id = $CDLICITACAO;

        $sql_query = "SELECT * FROM TBLICITCAO WHERE CDLICITACAO = $id";
        $stid = oci_parse($this->db, $sql_query);

        oci_execute($stid);
        return $stid;

    } catch (Exception $e) {
        echo $e->getMessage() . "<br>Error na linha:  ";
        echo "<b>" . $e->getTraceAsString()."</b>";
        parent::fechar();
    }
}

【问题讨论】:

    标签: php oracle select


    【解决方案1】:

    使用绑定变量非常重要。这是为了安全和性能。

    至少尝试一下:

    $sql_query = "SELECT * FROM TBLICITCAO WHERE CDLICITACAO = :id";
    $stid = oci_parse($this->db, $sql_query);
    oci_bind_by_name($stid, ":id", $CDLICITACAO);
    oci_execute($stid);
    

    【讨论】:

    • 不工作,返回空... vardump 在变量 $stid = resource(8) 类型(oci8 语句)
    • 您需要发布更多详细信息,尤其是表架构、PHP 中使用的示例数据和完整错误。添加error_reporting(E_ALL); // In PHP 5.3 use E_ALL|E_STRICT ini_set('display_errors', 'On');
    • 如果您将 $CDLICITACAO 变量更改为“101010”,它会起作用
    • 如果你不想分享我要求的信息,我只能说'继续调试'
    • 调试他打印了这个,资源(9)类型(oci8语句)资源(9)类型(oci8语句)字符串(63)“SELECT * FROM TBLICITCAO WHERE CDLICITACAO =:id”字符串(20) “014384”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2013-06-28
    • 2012-07-29
    • 1970-01-01
    • 2019-08-27
    • 2015-11-16
    相关资源
    最近更新 更多