文字

Firebird/InterBase 函数

Table of Contents

  • ibase_add_user — Add a user to a security database
  • ibase_affected_rows — Return the number of rows that were affected by the previous query
  • ibase_backup — Initiates a backup task in the service manager and returns immediately
  • ibase_blob_add — Add data into a newly created blob
  • ibase_blob_cancel — Cancel creating blob
  • ibase_blob_close — Close blob
  • ibase_blob_create — Create a new blob for adding data
  • ibase_blob_echo — Output blob contents to browser
  • ibase_blob_get — Get len bytes data from open blob
  • ibase_blob_import — Create blob, copy file in it, and close it
  • ibase_blob_info — Return blob length and other useful info
  • ibase_blob_open — Open blob for retrieving data parts
  • ibase_close — Close a connection to an InterBase database
  • ibase_commit_ret — Commit a transaction without closing it
  • ibase_commit — Commit a transaction
  • ibase_connect — Open a connection to a database
  • ibase_db_info — Request statistics about a database
  • ibase_delete_user — Delete a user from a security database
  • ibase_drop_db — Drops a database
  • ibase_errcode — Return an error code
  • ibase_errmsg — Return error messages
  • ibase_execute — Execute a previously prepared query
  • ibase_fetch_assoc — Fetch a result row from a query as an associative array
  • ibase_fetch_object — Get an object from a InterBase database
  • ibase_fetch_row — Fetch a row from an InterBase database
  • ibase_field_info — Get information about a field
  • ibase_free_event_handler — Cancels a registered event handler
  • ibase_free_query — Free memory allocated by a prepared query
  • ibase_free_result — Free a result set
  • ibase_gen_id — Increments the named generator and returns its new value
  • ibase_maintain_db — Execute a maintenance command on the database server
  • ibase_modify_user — Modify a user to a security database
  • ibase_name_result — Assigns a name to a result set
  • ibase_num_fields — Get the number of fields in a result set
  • ibase_num_params — Return the number of parameters in a prepared query
  • ibase_param_info — Return information about a parameter in a prepared query
  • ibase_pconnect — Open a persistent connection to an InterBase database
  • ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
  • ibase_query — Execute a query on an InterBase database
  • ibase_restore — Initiates a restore task in the service manager and returns immediately
  • ibase_rollback_ret — Roll back a transaction without closing it
  • ibase_rollback — Roll back a transaction
  • ibase_server_info — Request information about a database server
  • ibase_service_attach — Connect to the service manager
  • ibase_service_detach — Disconnect from the service manager
  • ibase_set_event_handler — Register a callback function to be called when events are posted
  • ibase_trans — Begin a transaction
  • ibase_wait_event — Wait for an event to be posted by the database

用户评论:

[#1] sysop at smartnettechnologies dot com [2007-09-25 12:01:42]

This example have 2 problems my be the autor writes it to fast but in the first case use one var for define user pass and and the use other one for call them and in secon step use comas after the ; 

$db = '/path/to/database.gdb';
$user = 'username';
$password = 'password';
$res = ibase_connect($db,$dbuser,$dbpass) or die("<br>" . ibase_errmsg());

// Query
$sql="SELECT * FROM table;"

[#2] fortega at uamericas dot net [2007-07-01 14:11:09]

Here is a minimalistic code example. Be sure to create an user and a database in order to make it work.

<?php
// Minimalistic code example

// Connection
$db '/path/to/database.gdb';
$user 'username';
$password 'password';
$res ibase_connect($db,$dbuser,$dbpass) or die("<br>" ibase_errmsg());

// Query
$sql="SELECT * FROM table;"
$result=ibase_query($res,$sql) or die(ibase_errmsg());
while(
$row=ibase_fetch_object($result)){
    
// use $row->FIELDNAME not $row->fieldname
    
print $row->FIELDNAME;
}
ibase_free_result($result);

// Closing
ibase_close($res) or die("<br>" ibase_errmsg());
?>


The following code can be used when creating tables in order to get auto incrementing fields:

<?php

// This function generates an autoincrement field, such as MySQL AUTO_INCREMENT.
function generate_autoincrement($tablename,$primarykey){
    
// * Generator
    
dbexec('CREATE GENERATOR GEN_' $tablename '_PK;');
    
// * Trigger
    
dbexec('CREATE TRIGGER INC_' $primarykey ' FOR ' $tablename
        
chr(13) . 'ACTIVE BEFORE INSERT POSITION 0'
        
chr(13) . 'AS'
        
chr(13) . 'BEGIN'
        
chr(13) . 'IF (NEW.' $primarykey ' IS NULL) THEN'
        
chr(13) . 'NEW.' $primarykey '= GEN_ID(GEN_' $tablename '_PK, 1);'
        
chr(13) . 'END');
}
?>


Usage:  <?php generate_autoincrement('table','column name'); ?>

[#3] felixlee at singnet dot com dot sg [2003-07-02 23:33:21]

Here's an example for getting results back from stored procedure in firebird.
The example make use of the stored procedure in Employee.gdb and the show_langs procedure.
 

$host = 'localhost:X:/firebird/examples/Employee.gdb';
$username='SYSDBA';
$password='masterkey';

$dbh = ibase_connect ( $host, $username, $password ) or die ("error in db connect");
 $stmt="Select * from SHOW_LANGS('SRep',4,'Italy')";
 $query = ibase_prepare($stmt);
 $rs=ibase_execute($query);
$row = ibase_fetch_row($rs);

echo $row[0];


ibase_free_query($query);
ibase_free_result($rs);


ibase_close($dbh);
?>

[#4] lars at dybdahl dot net [2002-09-20 07:32:15]

It is not possible to use interbase/firebird without initiating transactions. It seems that transactions are not automatically committed or rolled back at the end of a script, so remember to end all interbase enabled scripts with ibase_rollback() or ibase_commit().

Worse is, that if you use ibase_pconnect (recommended), transactions survive from one request to the next. So that if you don't rollback your transaction at the end of the script, another user's request might continue the transaction that the first request opened.

This has two implications:
1) Clicking refresh in your browser won't make you see newer data, because you still watch data from the same transaction.
2) Some php scripts might fail occassionally and not fail in other occasions, depending on with apache server thread and thereby which transaction they start using.

Unfortunately, there is no such thing as
if (ibase_intransaction()) ibase_rollback();

so be sure that ALL your scripts end with an ibase_rollback() or ibase_commit();

[#5] interbase at almico dot com [2002-09-05 14:24:06]

If you are using VirtualHosts with Apache, you might find useful the following directive:

php_flag magic_quotes_sybase on

Use it in any VirtualHost and it will be set locally to that VirtualHost without interfering with any global setting.
This is an example:

<VirtualHost 555.666.777.888>
   ServerName www.samplehost.com
   DirectoryIndex index.php index.htm
   php_flag magic_quotes_sybase on
</VirtualHost>

[#6] theynich_s at yahoo dot com [2002-05-11 11:16:54]

Hello PHP Mania,

i have made a paging for PHP with Interbase...... :)

i hope it usefull and work....:)

it`s a litle bit of example :

<?php
$connection 
ibase_connect($yourdb$user$password);

$filename BASENAME(__FILE__);
$strsql "Your SQL";
$result ibase_query($connection$strsql);

function 
ibase_num_rows($query) { //I have pick it from bg_idol@hotmail.com
 
$i 0;
 while (
ibase_fetch_row($query)) {
    
$i++;
  }
return 
$i;
}
$nrow ibase_num_rows($result);//sum of row

$strSQL "your SQL";
$result ibase_query($connection$strSQL);

if (!isset(
$page))
  
$page 1;

$
$i 0;
$recperpage 4;
$norecord = ($page 1) * $recperpage;
if (
$norecord){
  
$j=0;
  while(
$j $norecord and list($code$name)= ibase_fetch_row($result)){

  
$j++;
  }
}
echo 
"<table>";
while (list(
$code$name)= ibase_fetch_row($result) and $i $recperpage){

  
?>

<tr>
<td width="5%"> <?php echo $code?> </td>
<td> <?php echo $name?> </td>
</tr>
<?php
$i
++;
}

$incr $page 1;
if (
$page 1$decr $page 1;

$numOfPage ceil($nrow/$recperpage);
?>

<tr>
<td colspan="3" align="center"> <?phpif ($page <= 1)
                    echo "<span>Prev</span>";
                  else
                      echo "<a href=".$filename."?page=".$decr.">Prev</a>";
                ?>

&nbsp;&nbsp;
<?if ($page == $numOfPage)
echo "<span>Next</span>";
  else
   echo "<a href=".$filename."?page=".$incr.">Next</a>";?>
</td>
</tr>
</table>

[#7] johan at essay dot org [2000-08-06 19:24:10]

For those who have problem with returning values from Stored Procedures in PHP-Interbase,  I have found a solution.   Use a select sentence like this:
select * from sp_prodecure(param, ...)
However, it is important that the procedure has a SUSPEND statement or else the procedure won't return any values.

But the "message length" (see above note) bug that you encounter when you try to execute a procedure should be fixed !

上一篇: 下一篇: