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]%'));
Информация копипастерам
Внимание! Копирование контента с сайта, возможно только с разрешения администратора. Т.е. Меня! Я скорее всего разрешу Вам это сделать, в обмен на живую ссылку, на статью оригинал.