PHP.mk документација

db2_exec

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.db2-exec.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.db2-exec.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
db2_exec

Референца за `function.db2-exec.php` со подобрена типографија и навигација.

function.db2-exec.php

db2_exec

("PECL ibm_db2" >= 1.0.0)

db2_exec Извршува SQL израз директно

= NULL

function db2_exec(resource $connection, string $statement, array $options = []): resource|false

Извршува SQL израз директно.

Ако планирате да ги интерполирате PHP променливите во SQL изразот, разберете дека ова е една од почестите безбедносни изложености. Разгледајте го повикувањето на db2_prepare() за подготовка на SQL израз со маркер за параметри за влезни вредности. Потоа можете да го повикате db2_execute() за да ги поминете влезните вредности и да избегнете напади со SQL инјектирање.

Ако планирате да го издавате истиот SQL израз повеќепати со различни параметри, разгледајте го повикувањето на db2_prepare() and db2_execute() за да му овозможите на серверскиот дел на базата на податоци да го повторно користи својот план за пристап и да ја зголеми ефикасноста на пристапот до вашата база на податоци.

Параметри

connection
Валидна база на податоци врска ресурс променлива како вратена од db2_connect() or db2_pconnect().
statement
SQL израз. Изразот не смее да содржи маркери за параметри.
options
Асоцијативен список кој содржи опции за изразот. Можете да го користите овој параметар за да побарате курсор што може да се скрола на серверите на базите на податоци што ја поддржуваат оваа функционалност. За опис на валидни опции за изразот, видете db2_set_option().

Вратени вредности

Враќа ресурс за израз ако SQL изразот беше издаден успешно, или false ако базата на податоци не успеа да го изврши SQL изразот.

Примери

Пример #1 Создавање табела со db2_exec()

Следниот пример користи db2_exec() за издавање сет на DDL изрази во процесот на создавање табела.

<?php
$conn
= db2_connect($database, $user, $password);

// Create the test table
$create = 'CREATE TABLE animals (id INTEGER, breed VARCHAR(32),
name CHAR(16), weight DECIMAL(7,2))'
;
$result = db2_exec($conn, $create);
if (
$result) {
print
"Successfully created the table.\n";
}

// Populate the test table
$animals = array(
array(
0, 'cat', 'Pook', 3.2),
array(
1, 'dog', 'Peaches', 12.3),
array(
2, 'horse', 'Smarty', 350.0),
array(
3, 'gold fish', 'Bubbles', 0.1),
array(
4, 'budgerigar', 'Gizmo', 0.2),
array(
5, 'goat', 'Rickety Ride', 9.7),
array(
6, 'llama', 'Sweater', 150)
);

foreach (
$animals as $animal) {
$rc = db2_exec($conn, "INSERT INTO animals (id, breed, name, weight)
VALUES (
{$animal[0]}, '{$animal[1]}', '{$animal[2]}', {$animal[3]})");
if (
$rc) {
print
"Insert... ";
}
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Successfully created the table.
Insert... Insert... Insert... Insert... Insert... Insert... Insert...

Пример #2 Извршување SELECT израз со курсор што може да се скрола

Следниот пример демонстрира како да побарате курсор што може да се скрола за SQL израз издаден од db2_exec().

<?php
$conn
= db2_connect($database, $user, $password);
$sql = "SELECT name FROM animals
WHERE weight < 10.0
ORDER BY name"
;
if (
$conn) {
require_once
'prepare.inc';
$stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
while (
$row = db2_fetch_array($stmt)) {
print
"$row[0]\n";
}
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Bubbles
Gizmo
Pook
Rickety Ride

Пример #3 Враќање XML податоци како SQL ResultSet

Следниот пример покажува како да се работи со документи складирани во XML колона користејќи ја базата на податоци SAMPLE. Користејќи многу едноставен SQL/XML, овој пример враќа некои од јазлите во XML документ во формат SQL ResultSet со кој повеќето корисници се запознаени.

<?php

$conn
= db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = 'SELECT * FROM XMLTABLE(
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
COLUMNS
"CID" VARCHAR (50) PATH \'@Cid\',
"NAME" VARCHAR (50) PATH \'name\',
"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
) AS T
WHERE NAME = \'Kathy Smith\'
'
;
$stmt = db2_exec($conn, $query);

while(
$row = db2_fetch_object($stmt)){
printf("$row->CID $row->NAME $row->PHONE\n");
}
db2_close($conn);

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

1000     Kathy Smith     416-555-1358
1001     Kathy Smith     905-555-7258

Пример #4 Изведување "JOIN" со XML податоци

The following example works with documents stored in 2 different XML columns in the SAMPLE database. It creates 2 temporary tables from the XML documents from 2 different columns and returns an SQL ResultSet with information regarding shipping status for the customer.

<?php

$conn
= db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = '
SELECT A.CID, A.NAME, A.PHONE, C.PONUM, C.STATUS
FROM
XMLTABLE(
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
COLUMNS
"CID" BIGINT PATH \'@Cid\',
"NAME" VARCHAR (50) PATH \'name\',
"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
) as A,
PURCHASEORDER AS B,
XMLTABLE (
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
\'db2-fn:xmlcolumn("PURCHASEORDER.PORDER")/PurchaseOrder\'
COLUMNS
"PONUM" BIGINT PATH \'@PoNum\',
"STATUS" VARCHAR (50) PATH \'@Status\'
) as C
WHERE A.CID = B.CUSTID AND
B.POID = C.PONUM AND
A.NAME = \'Kathy Smith\'
'
;

$stmt = db2_exec($conn, $query);

while(
$row = db2_fetch_object($stmt)){
printf("$row->CID $row->NAME $row->PHONE $row->PONUM $row->STATUS\n");
}

db2_close($conn);

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

1001     Kathy Smith     905-555-7258     5002     Shipped

Следниот пример работи со документи складирани во 2 различни XML колони во базата на податоци SAMPLE. Создава 2 привремени табели од XML документите од 2 различни колони и враќа SQL ResultSet со информации во врска со статусот на испорака за клиентот.

Пример #5 Враќање SQL податоци како дел од поголем XML документ

<?php

$conn
= db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = '
SELECT
XMLSERIALIZE(
XMLQUERY(\'
declare boundary-space strip;
declare default element namespace "http://posample.org";
<promoList> {
for $prod in $doc/product
where $prod/description/price < 10.00
order by $prod/description/price ascending
return(
<promoitem> {
$prod,
<startdate> {$start} </startdate>,
<enddate> {$end} </enddate>,
<promoprice> {$promo} </promoprice>
} </promoitem>
)
} </promoList>
\' passing by ref DESCRIPTION AS "doc",
PROMOSTART as "start",
PROMOEND as "end",
PROMOPRICE as "promo"
RETURNING SEQUENCE)
AS CLOB (32000))
AS NEW_PRODUCT_INFO
FROM PRODUCT
WHERE PID = \'100-100-01\'
'
;

$stmt = db2_exec($conn, $query);

while(
$row = db2_fetch_array($stmt)){
printf("$row[0]\n");
}
db2_close($conn);

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

<promoList xmlns="http://posample.org">
    <promoitem>
    <product pid="100-100-01">
        <description>
            <name>Snow Shovel, Basic 22 inch</name>
            <details>Basic Snow Shovel, 22 inches wide, straight handle with D-Grip</details>
            <price>9.99</price>
            <weight>1 kg</weight>
        </description>
    </product>
    <startdate>2004-11-19</startdate>
    <enddate>2004-12-19</enddate>
    <promoprice>7.25</promoprice>
    </promoitem>
</promoList>

Види Исто така

  • db2_execute() - Извршува подготвена SQL изјава
  • db2_prepare() - Подготвува SQL изјава за извршување

Белешки од корисници 1 белешка

(PECL ibm_db2 >= 1.0.0)
20 години пред
If you need to "emulate" offset/limit (as PEAR::DB puts it) for db2 queries, you will definitely need to add array('cursor' => DB2_SCROLLABLE) to your db2_exec() call. Otherwise, you will get nothing useful from db2_fetch_{whatever}() when you try to (see following hack for example):

<?php
$limit = 10;
$offset = 20;

for ($i = 0; $i < $limit && $row = db2_fetch_array($result, $offset + $i); $i++) {
    // stuff goes here
}
?>

You can accomplish the same time of thing using sub-selects, "with" statements and other things new to me in the world of DB2, but the more dynamically generated the queries, the more difficult it gets to implement limit/offset behavior on the fly.
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.