Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP oci8中使用准备好的语句和绑定参数_Php_Sql_Database_Oci8 - Fatal编程技术网

如何在PHP oci8中使用准备好的语句和绑定参数

如何在PHP oci8中使用准备好的语句和绑定参数,php,sql,database,oci8,Php,Sql,Database,Oci8,因此,建议使用准备好的语句和绑定参数来编写sql语句。本手册未说明如何使用准备好的语句执行此操作 下面是如何将查询中的下一行作为对象返回,但这不是最佳做法,因为查询字符串可以包含where col=$PHPvariable 是的,可以对sql语句使用oci8参数化查询 oci_bind_by_name将PHP变量绑定到Oracle绑定变量占位符bv_name。绑定对于Oracle数据库性能非常重要,也是避免SQL注入安全问题的一种方法 绑定减少了SQL注入问题,因为与绑定变量关联的数据从未被视为

因此,建议使用准备好的语句和绑定参数来编写sql语句。本手册未说明如何使用准备好的语句执行此操作

下面是如何将查询中的下一行作为对象返回,但这不是最佳做法,因为查询字符串可以包含where col=$PHPvariable


是的,可以对sql语句使用oci8参数化查询

oci_bind_by_name将PHP变量绑定到Oracle绑定变量占位符bv_name。绑定对于Oracle数据库性能非常重要,也是避免SQL注入安全问题的一种方法

绑定减少了SQL注入问题,因为与绑定变量关联的数据从未被视为SQL语句的一部分。它不需要引用或转义

阅读更多

删除第14行:dpid之后的空格 正确语法=>oci_bind_by_name$stid',:dpid',$didbv

的手册提供了一个如何使用已准备好的语句的示例-
<?php

    $conn = oci_connect('hr', 'welcome', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $select_sql= oci_parse($conn, 'SELECT id, description FROM mytab');
    oci_execute($select_sql);

    while (($row = oci_fetch_object($select_sql)) != false) {
        // Use upper case attribute names for each standard Oracle column
        echo $row->ID . "<br>\n";
        echo $row->DESCRIPTION . "<br>\n"; 
    }

    oci_free_statement($stid);
    oci_close($conn);

    ?>
 <?php

    $conn = oci_connect("hr", "hrpwd", "localhost/XE");
    if (!$conn) {
        $m = oci_error();
        trigger_error(htmlentities($m['message']), E_USER_ERROR);
    }

    $sql = 'SELECT last_name FROM employees WHERE department_id = :dpid ';

    $stid = oci_parse($conn, $sql);
    $didbv = 60;

    oci_bind_by_name($stid, ':dpid ', $didbv);
    oci_execute($stid);

    while (($row = oci_fetch_object($stid)) != false) {
        echo $row->last_name ."<br>\n";
    }


    oci_free_statement($stid);
    oci_close($conn);

    ?>