©
本文档使用 PHP中文网手册 发布
(PHP 5)
ibase_execute — Execute a previously prepared query
$query
[, mixed $bind_arg
[, mixed $...
]] )Execute a query prepared by ibase_prepare() .
This is a lot more effective than using ibase_query() if you are repeating a same kind of query several times with only some parameters changing.
query
An InterBase query prepared by ibase_prepare() .
bind_arg
...
If the query raises an error, returns FALSE
. If it is successful and
there is a (possibly empty) result set (such as with a SELECT query),
returns a result identifier. If the query was successful and there were
no results, returns TRUE
.
Note:
This function returns the number of rows affected by the query (if > 0 and applicable to the statement type). A query that succeeded, but did not affect any rows (e.g. an UPDATE of a non-existent record) will return
TRUE
.
Example #1 ibase_execute() example
<?php
$dbh = ibase_connect ( $host , $username , $password );
$updates = array(
1 => 'Eric' ,
5 => 'Filip' ,
7 => 'Larry'
);
$query = ibase_prepare ( $dbh , "UPDATE FOO SET BAR = ? WHERE BAZ = ?" );
foreach ( $updates as $baz => $bar ) {
ibase_execute ( $query , $bar , $baz );
}
?>
[#1] caveman [2003-01-24 10:18:18]
ibase_execute only return resource id not the actual result, you need to use ibase_fetch_row or ibase_fetch_object to retrieve actual result.
On the example above given by anthony
it should be like these
$dbh = ibase_connect ( $host, $username, $password ) ;
$stmt = 'SELECT * FROM "EMPLOYEE" WHERE "SALARY" = ? AND "DEPT_CD" = ? ;' ;
$prep = ibase_prepare ( $dbh, $stmt ) ;
$salary = Array ( "10000", "25000", "33000", "48000" ) ;
$dept_cd = 'SALES' ;
foreach ( $salary as $val ) {
$res = ibase_execute ($prep, $val, $dept_cd);
$taxForm[$val] = ibase_fetch_row ($res);
}
[#2] mclap at ulstu dot ru [2002-09-07 18:54:02]
For variable argument list in ibase_execute you can use folowing functions:
For PHP >= 4.0.4:
function db_execute($stmt,$data)
{
if(!is_array($data))
return ibase_execute($stmt,$data);
array_unshift($data,$stmt);
$rc=call_user_func_array('ibase_execute',$data);
return $rc;
}
For any version of PHP:
function db_execute($stmt,$data)
{
if(!is_array($data))
return ibase_execute($stmt,$data);
$params = array();
while( list($k,$v) = each($data) )
$params[$k] = '$data['.$k.']';
eval('$rc=ibase_execute($stmt,'.join(',',$params).');');
return $rc;
}