什么是oci_bind_by_name?

时间:2011-04-16 18:21:07

标签: 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);

-1是什么?

2 个答案:

答案 0 :(得分: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);

因此,当您运行该查询时,:nm将为O'Reilly-1表示绑定值应与变量一样长。这是默认值。您不必设置它。只要您只绑定现有变量,就不需要打扰。

您想使用此方法,因为

  

Binding允许数据库重用语句上下文和caches from previous executions of the statement,即使其他用户或进程最初执行它也是如此。绑定减少了SQL Injection问题,因为与绑定变量关联的数据永远不会被视为SQL语句的一部分。它不需要引用或转义。

这意味着它更安全并且更好的性能

答案 1 :(得分:0)

oci_bind_by_name方法指定:nm的值为“O'Reilly” -1是默认值...所以需要打扰。如果您指定的其他值将告诉方法具有值的长度:nm。