ibase_execute

(PHP 3 >= 3.0.6, PHP 4, PHP 5)

ibase_execute -- Execute a previously prepared query

Description

resource ibase_execute ( resource query [, mixed bind_arg [, mixed ...]] )

Execute a query prepared by ibase_prepare(). 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.

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.

例子 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);
}

?>

注: In PHP 5.0.0 and up, 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.

See also ibase_query().


add a note add a note User Contributed Notes
caveman
25-Jan-2003 02: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);
}
mclap at ulstu dot ru
08-Sep-2002 09:54
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;
}