PDO Подготовленные выражения и хранимые процедуры. - PDO Подготовленные выражения и хранимые процедуры. стр-2

PDO Подготовленные выражения и хранимые процедуры. - PDO Подготовленные выражения и хранимые процедуры. стр-2

Индекс материала
PDO Подготовленные выражения и хранимые процедуры.
Хранимые процедуры
Все страницы

Если драйвер базы данных поддерживает, то запрос может также связывать IN и OUT параметры. Параметры OUT обычно используются, чтобы получить данные из хранимых процедур. Выходные параметры OUT чуть более сложнее, в использовании чем входные параметры IN. Разработчик должен знать, насколько большое значение может принять данный параметр. Если значение, оказывается, больше чем указано, произойдёт ошибка.

Вызов хранимой процедуры с параметром OUT:


  $stmt = $dbh->prepare( 'CALL sp_returns_string(?)' );
  // Здесь четвёртым параметром указывается макс. величина, которую
  // может принять параметр:
  $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); 

  // Выполнение хранимой процедуры:
  $stmt->execute();
  echo "procedure returned $return_value\n";

Разработчики могут также определить параметры, которые являются INOUT. Синтаксис подобен, привязке IN и OUT параметров. В следующем примере строку «привет» мы передадим в хранимую процедуру параметром INOUT, и когда он же вернётся, значение «привет» заменится возвращаемым значением процедуры:

Вызов хранимой процедуры с параметром INOUT:


  $stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
  $value = "hello";
  $stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); 

  // Выполнение хранимой процедуры:
  $stmt->execute();
  print "procedure returned".$value;

Не правильное использование плейсхолдера:


  //Так нельзя:
  $stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%' ");
  $stmt->execute(array($_GET['name']));

  // Так правильно:
  $stmt = $dbh->prepare('SELECT * FROM REGISTRY where name LIKE ?');
  $stmt->execute(array('%$_GET[name]%'));



Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 135 гостей онлайн