什么是oci_bind_by_name?

use*_*792 5 php oracle

oci_bind_by_name为了什么?我阅读了php手册,无法理解任何内容.请有人向我解释一下

看看这个例子:

$name = "O'Reilly";
$stid = oci_parse($mycon, 'INSERT INTO CUSTOMERS (NAME) VALUES (:nm)');
oci_bind_by_name($stid, ':nm', $name, -1);
oci_execute($stid);
Run Code Online (Sandbox Code Playgroud)

-1为了什么?

Gor*_*don 9

它将值绑定到命名参数:

$name = "O'Reilly";
$stid = oci_parse($mycon, 'INSERT INTO CUSTOMERS (NAME) VALUES (:nm)');
oci_bind_by_name($stid, ':nm', $name, -1);
oci_execute($stid);
Run Code Online (Sandbox Code Playgroud)

所以当你运行那个查询:nmO'Reilly.的-1手段,结合的值应为只要可变.这是默认值.您不必设置它.只要您只绑定现有变量,就不需要费心了.

你想使用这种方法,因为

绑定允许数据库重用语句上下文和来自语句的先前执行的高速缓存,即使其他用户或进程最初执行它也是如此.绑定减少了SQL注入问题,因为与绑定变量关联的数据永远不会被视为SQL语句的一部分.它不需要引用或转义.

这意味着它更安全,性能更好.