A simple select example.
$pr_stmt = db2_prepare ($this->conn,"select count(*) from note where city=? and year= ?");
db2_execute($pr_stmt,array('test',2016));
$count_res = db2_fetch_array($pr_stmt);
echo "Count =".$count_res[0]db2_prepare
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
db2_prepare
Референца за `function.db2-prepare.php` со подобрена типографија и навигација.
db2_prepare
("PECL ibm_db2" >= 1.0.0)
db2_prepare — Подготвува SQL изјава за извршување
= NULL
db2_prepare() креира подготвена SQL изјава која може да вклучува 0 или повеќе ознаки за параметри (? знаци) што претставуваат параметри за влез, излез или влез/излез. Можете да поминете параметри до подготвената изјава користејќи
db2_bind_param(), или само за влезни вредности, како низа предадена на db2_execute().
Постојат три главни предности за користење подготвени изјави во вашата апликација:
- Оваа функција е достапна кога PHP е поврзан со библиотеки на Oracle Database од верзија 10: кога подготвувате изјава, серверот на базата на податоци креира оптимизиран план за пристап за добивање податоци со таа изјава. Последователното издавање на подготвената изјава со db2_execute() им овозможува на изјавите да го повторно користат тој план за пристап и ја избегнува тежината на динамично креирање нов план за пристап за секоја издадена изјава.
- Безбедност: кога подготвувате изјава, можете да вклучите ознаки за параметри за влезни вредности. Кога извршувате подготвена изјава со влезни вредности за заменски знаци, серверот на базата на податоци ја проверува секоја влез вредност за да се увери дека типот одговара на дефиницијата на колоната или дефиницијата на параметарот.
- Напредна функционалност: Ознаките за параметри не само што ви овозможуваат да поминувате влезни вредности до подготвени SQL изјави, туку исто така ви овозможуваат да добивате OUT и INOUT параметри од складирани процедури користејќи db2_bind_param().
Параметри
connection- Валидна база на податоци врска ресурс променлива како вратена од db2_connect() or db2_pconnect().
statement- SQL изјава, опционално содржи една или повеќе ознаки за параметри..
options- Асоцијативен список кој содржи опции за изразот. Можете да го користите овој параметар за да побарате курсор што може да се скрола на серверите на базите на податоци што ја поддржуваат оваа функционалност. За опис на валидни опции за изразот, видете db2_set_option().
Вратени вредности
Враќа ресурс за изјава ако SQL изјавата беше успешно анализирана и подготвена од серверот на базата на податоци. Враќа false ако серверот на базата на податоци врати грешка. Можете да утврдите која грешка беше вратена со повикување
db2_stmt_error() or db2_stmt_errormsg().
Примери
Пример #1 Подготовка и извршување на SQL изјава со маркерски параметри
Следниот пример подготвува изјава INSERT што прифаќа четири маркерски параметри, а потоа итерира преку низа од низи што ги содржат влезните вредности што треба да се поминат до db2_execute().
<?php
$animals = array(
array(0, 'cat', 'Pook', 3.2),
array(1, 'dog', 'Peaches', 12.3),
array(2, 'horse', 'Smarty', 350.0),
);
$insert = 'INSERT INTO animals (id, breed, name, weight)
VALUES (?, ?, ?, ?)';
$stmt = db2_prepare($conn, $insert);
if ($stmt) {
foreach ($animals as $animal) {
$result = db2_execute($stmt, $animal);
}
}
?>Види Исто така
- db2_bind_param() - Врзува PHP променлива со параметар на SQL изјава
- db2_execute() - Извршува подготвена SQL изјава
- db2_stmt_error() - Враќа стринг што го содржи SQLSTATE вратен од SQL изјава
- db2_stmt_errormsg() - Враќа стринг што го содржи последниот текст за грешка на SQL изјавата
Белешки од корисници 3 белешки
If you are having problems with scrollable cursors and the prepare statement, I've found that you cant set the scrollable option on the connection. The following code (which tries to get the 2nd record):
<?php
$sql = "SELECT * FROM SCHEMA.TABLENAME";
$options = array('cursor' => DB2_SCROLLABLE);
$conn = db2_connect($database, $user, $password,$options);
$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);
$row = db2_fetch_both($stmt, 2);
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql, $options);
$result = db2_execute($stmt);
$row = db2_fetch_both($stmt, 2);
?>
Will result in the following error:
Warning: db2_fetch_both() [function.db2-fetch-both]: Fetch Failure in dbtest.php on line 7
In fact, even if you set the options on both the connection and the prepare your fetch will not work. You must only set that option on the prepare.if you have the error message : PHP Warning: db2_prepare() [<a href='function.db2-prepare'>function.db2-prepare</a>]: Statement Prepare Failed in (....)
and cannot display the error message using db2_stmt_errormsg() , then check if your database connection handle is (still) valid