для чего используется имя oci_bind_by_name? - PullRequest
5 голосов
/ 16 апреля 2011

для чего 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? 1010 *

Ответы [ 2 ]

9 голосов
/ 16 апреля 2011

Связывает значения с именованными параметрами:

$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 позволяет базе данных повторно использовать контекст оператора и кэшируется из предыдущих выполнений оператора , даже если его ранее выполнял другой пользователь или процесс.Привязка уменьшает проблемы SQL-инъекция , поскольку данные, связанные с переменной привязки, никогда не рассматриваются как часть оператора SQL.Это не нуждается в цитировании или экранировании.

, что означает, что он более безопасен и имеет лучшую производительность .

0 голосов
/ 22 апреля 2011

Метод oci_bind_by_name указывает, что значением для: nm является «O'Reilly» -1 значение по умолчанию ... так что надо беспокоиться. если вы указываете другое значение, которое сообщит методу длину значения в: нм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...