php-doc-en/functions/fbsql.xml
Hartmut Holzgraefe d66349433d added skeletons for missing functions
git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@65488 c90b9560-bf6c-de11-be94-00142212c4b1
2001-12-17 20:27:17 +00:00

2557 lines
78 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.34 $ -->
<reference id="ref.fbsql">
<title>FrontBase Functions</title>
<titleabbrev>FrontBase</titleabbrev>
<partintro>
<simpara>
These functions allow you to access FrontBase database servers. In
order to have these functions available, you must compile php with
fbsql support by using the <option
role="configure">--with-fbsql</option> option. If you use this
option without specifying the path to fbsql, php will search for
the fbsql client libraries in the default installation location
for the platform. Users who installed FrontBase in a non standard
directory should always specify the path to fbsql: <option
role="configure">--with-fbsql=/path/to/fbsql</option>. This will
force php to use the client libraries installed by FrontBase,
avoiding any conflicts.
</simpara>
<simpara>
More information about FrontBase can be found at <ulink
url="&url.fbsql;">&url.fbsql;</ulink>.
</simpara>
<simpara>
Documentation for FrontBase can be found at <ulink
url="&url.fbsql.docs;">&url.fbsql.docs;</ulink>.
</simpara>
<simpara>
Frontbase support has been added to PHP 4.0.6.
</simpara>
</partintro>
<refentry id="function.fbsql-affected-rows">
<refnamediv>
<refname>fbsql_affected_rows</refname>
<refpurpose>
Get number of affected rows in previous FrontBase operation
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>fbsql_affected_rows</function></funcdef>
<paramdef>int
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_affected_rows</function> returns the number
of rows affected by the last INSERT, UPDATE or DELETE query
associated with <parameter>link_identifier</parameter>. If the
link identifier isn't specified, the last link opened by
<function>fbsql_connect</function> is assumed.
</para>
<note>
<para>
If you are using transactions, you need to call
<function>fbsql_affected_rows</function> after your INSERT,
UPDATE, or DELETE query, not after the commit.
</para>
</note>
<para>
If the last query was a DELETE query with no WHERE clause, all of
the records will have been deleted from the table but this
function will return zero.
</para>
<note>
<para>
When using UPDATE, FrontBase will not update columns where the
new value is the same as the old value. This creates the
possiblity that <function>fbsql_affected_rows</function> may not
actually equal the number of rows matched, only the number of
rows that were literally affected by the query.
</para>
</note>
<para>
If the last query failed, this function will return -1.
</para>
<para>
See also: <function>fbsql_num_rows</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-autocommit">
<refnamediv>
<refname>fbsql_autocommit</refname>
<refpurpose>Enable or disable autocommit.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_autocommit</function></funcdef>
<paramdef>resource
<parameter>link_identifier</parameter>
</paramdef>
<paramdef>bool
<parameter>
<optional>OnOff</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_autocommit</function> returns the current
autocommit status. if the optional OnOff parameter is
given the auto commit status will be changed.
With OnOff set to &true; each statement will be commited
automatically, if no errors was found.
With OnOff set to &false; the user must commit or rollback
the transaction using either <function>fbsql_commit</function> or
<function>fbsql_rollback</function>.
</para>
<para> See also:
<function>fbsql_commit</function> and
<function>fbsql_rollback</function>
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-change-user">
<refnamediv>
<refname>fbsql_change_user</refname>
<refpurpose>
Change logged in user of the active connection
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>fbsql_change_user</function></funcdef>
<paramdef>string <parameter>user</parameter></paramdef>
<paramdef>string <parameter>password</parameter></paramdef>
<paramdef>string
<parameter>
<optional>database</optional>
</parameter>
</paramdef>
<paramdef>int
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_change_user</function> changes the logged in user
of the current active connection, or the connection given by the
optional parameter link_identifier. If a database is specified,
this will default or current database after the user has been
changed. If the new user and password authorization fails, the
current connected user stays active.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-close">
<refnamediv>
<refname>fbsql_close</refname>
<refpurpose>Close FrontBase connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>boolean <function>fbsql_close</function></funcdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on error.
</para>
<para>
<function>fbsql_close</function> closes the connection to the
FrontBase server that's associated with the specified link
identifier. If <parameter>link_identifier</parameter> isn't
specified, the last opened link is used.
</para>
<para>
Using <function>fbsql_close</function> isn't usually necessary,
as non-persistent open links are automatically closed at the end
of the script's execution.
</para>
<example>
<title><function>fbsql_close</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_connect ("localhost", "_SYSTEM", "secret")
or die ("Could not connect");
print ("Connected successfully");
fbsql_close ($link);
?>
]]>
</programlisting>
</example>
<para>
See also: <function>fbsql_connect</function> and
<function>fbsql_pconnect</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-commit">
<refnamediv>
<refname>fbsql_commit</refname>
<refpurpose>Commits a transaction to the database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_commit</function></funcdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on failure.
</para>
<para>
<function>fbsql_commit</function> ends the current transaction by
writing all insertsm updates and deletes to the disk and
unlucking all row and table locks held by the transaction. This
command is only needed if autocommit is set to false.
</para>
<para> See also:
<function>fbsql_autocommit</function> and
<function>fbsql_rollback</function>
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-connect">
<refnamediv>
<refname>fbsql_connect</refname>
<refpurpose>Open a connection to a FrontBase Server</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>fbsql_connect</function></funcdef>
<paramdef>string
<parameter>
<optional>hostname
</optional>
</parameter>
</paramdef>
<paramdef>string
<parameter>
<optional>username</optional>
</parameter>
</paramdef>
<paramdef>string
<parameter>
<optional>password</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns a positive FrontBase link identifier on success, or an
error message on failure.
</para>
<para>
<function>fbsql_connect</function> establishes a connection to a
FrontBase server. The following defaults are assumed for missing
optional parameters: <parameter>hostname</parameter> = '&null;',
<parameter>username</parameter> = '_SYSTEM' and
<parameter>password</parameter> = empty password.
</para>
<para>
If a second call is made to <function>fbsql_connect</function>
with the same arguments, no new link will be established, but
instead, the link identifier of the already opened link will be
returned.
</para>
<para>
The link to the server will be closed as soon as the execution of
the script ends, unless it's closed earlier by explicitly calling
<function>fbsql_close</function>.
</para>
<example>
<title><function>fbsql_connect</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_connect ("localhost", "_SYSTEM", "secret")
or die ("Could not connect");
print ("Connected successfully");
fbsql_close ($link);
?>
]]>
</programlisting>
</example>
<para>
See also
<function>fbsql_pconnect</function> and
<function>fbsql_close</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-create-db">
<refnamediv>
<refname>fbsql_create_db</refname>
<refpurpose>Create a FrontBase database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_create_db</function></funcdef>
<paramdef>string <parameter>database name</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_create_db</function> attempts to create a new
database on the server associated with the specified link
identifier.
</para>
<example>
<title><function>fbsql_create_db</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
or die ("Could not connect");
if (fbsql_create_db ("my_db")) {
print("Database created successfully\n");
} else {
printf("Error creating database: %s\n", fbsql_error ());
}
?>
]]>
</programlisting>
</example>
<para>
See also: <function>fbsql_drop_db</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-create-blob">
<refnamediv>
<refname>fbsql_create_blob</refname>
<refpurpose>Create a BLOB</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_create_blob</function></funcdef>
<paramdef>string <parameter>blob_data</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: A resource handle to the newly created blob.
</para>
<para>
<function>fbsql_create_blob</function> creates a blob from
blob_data. The returned resource handle can be used with insert
and update commands to store the blob in the database.
</para>
<example>
<title><function>fbsql_create_blob</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
or die ("Could not connect");
$filename = "blobfile.bin";
$fp = fopen($filename, "rb");
$blobdata = fread($fp, filesize($filename));
fclose($fp);
$blobHandle = fbsql_create_blob($blobdata, $link);
$sql = "INSERT INTO BLOB_TABLE (BLOB_COLUMN) VALUES ($blobHandle);";
$rs = fbsql_query($sql, $link);
?>
]]>
</programlisting>
</example>
<para>
See also: <function>fbsql_create_clob</function>,
<function>fbsql_read_blob</function>,
<function>fbsql_read_clob</function>, and
<function>fbsql_set_lob_mode</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-create-clob">
<refnamediv>
<refname>fbsql_create_clob</refname>
<refpurpose>Create a CLOB</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_create_clob</function></funcdef>
<paramdef>string <parameter>clob_data</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: A resource handle to the newly created CLOB.
</para>
<para>
<function>fbsql_create_clob</function> creates a clob from
clob_data. The returned resource handle can be used with insert
and update commands to store the clob in the database.
</para>
<example>
<title><function>fbsql_create_clob</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
or die ("Could not connect");
$filename = "clob_file.txt";
$fp = fopen($filename, "rb");
$clobdata = fread($fp, filesize($filename));
fclose($fp);
$clobHandle = fbsql_create_clob($clobdata, $link);
$sql = "INSERT INTO CLOB_TABLE (CLOB_COLUMN) VALUES ($clobHandle);";
$rs = fbsql_query($sql, $link);
?>
]]>
</programlisting>
</example>
<para>
See also: <function>fbsql_create_blob</function>,
<function>fbsql_read_blob</function>,
<function>fbsql_read_clob</function>, and
<function>fbsql_set_lob_mode</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-database-password">
<refnamediv>
<refname>fbsql_database_password</refname>
<refpurpose>
Sets or retreives the password for a FrontBase database
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string
<function>fbsql_database_password</function>
</funcdef>
<paramdef>resource
<parameter>link_identifier</parameter></paramdef>
<paramdef>string
<parameter>
<optional>database_password</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: The database password for the database represented by
the link identifier.
</para>
<para>
<function>fbsql_database_password</function> sets and retreives
the database password for the current database. if the second
optional parameter is given the function sets the database
password for the database on the server that's associated with
the specified link identifier. If no link identifier is
specified, the last opened link is assumed. If no link is open,
the function will try to establish a link as if
<function>fbsql_connect</function> was called, and use it.
</para>
<para>
See also: <function>fbsql_connect</function> and
<function>fbsql_pconnect</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-data-seek">
<refnamediv>
<refname>fbsql_data_seek</refname>
<refpurpose>Move internal result pointer</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_data_seek</function></funcdef>
<paramdef>resource
<parameter>result_identifier</parameter>
</paramdef>
<paramdef>int <parameter>row_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on failure.
</para>
<para>
<function>fbsql_data_seek</function> moves the internal row
pointer of the FrontBase result associated with the specified
result identifier to point to the specified row number. The next
call to <function>fbsql_fetch_row</function> would return that
row.
</para>
<para>
<parameter>Row_number</parameter> starts at 0.
</para>
<example>
<title><function>fbsql_data_seek</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
or die ("Could not connect");
fbsql_select_db ("samp_db")
or die ("Could not select database");
$query = "SELECT last_name, first_name FROM friends;";
$result = fbsql_query ($query)
or die ("Query failed");
# fetch rows in reverse order
for ($i = fbsql_num_rows ($result) - 1; $i >=0; $i--) {
if (!fbsql_data_seek ($result, $i)) {
printf ("Cannot seek to row %d\n", $i);
continue;
}
if(!($row = fbsql_fetch_object ($result)))
continue;
printf("%s %s<BR>\n", $row->last_name, $row->first_name);
}
fbsql_free_result ($result);
?>
]]>
</programlisting>
</example>
</refsect1>
</refentry>
<refentry id="function.fbsql-db-query">
<refnamediv>
<refname>fbsql_db_query</refname>
<refpurpose>Send a FrontBase query</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>fbsql_db_query</function></funcdef>
<paramdef>string <parameter>database</parameter></paramdef>
<paramdef>string <parameter>query</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: A positive FrontBase result identifier to the query
result, or &false; on error.
</para>
<para>
<function>fbsql_db_query</function> selects a database and
executes a query on it. If the optional link identifier isn't
specified, the function will try to find an open link to the
FrontBase server and if no such link is found it'll try to create
one as if <function>fbsql_connect</function> was called with no
arguments
</para>
<para>
See also <function>fbsql_connect</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-db-status">
<refnamediv>
<refname>fbsql_db_status</refname>
<refpurpose>Get the status for a given database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>fbsql_db_status</function></funcdef>
<paramdef>string <parameter>database_name</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: An integer value with the current status.
</para>
<para>
<function>fbsql_db_status</function> requests the current status
of the database specified by
<parameter>database_name</parameter>. If the
<parameter>link_identifier</parameter> is omitted the default
link_identifier will be used.
</para>
<para>
The return value can be one of the following constants:
<itemizedlist>
<listitem>
<simpara>
&false; - The exec handler for the host was invalid. This
error will ocour when the link_identifier connects directly to
a database by using a port number. FBExec can be available on
the server but no connection has been made for it.
</simpara>
</listitem>
<listitem>
<simpara>
FBSQL_UNKNOWN - The Status is unknown.
</simpara>
</listitem>
<listitem>
<simpara>
FBSQL_STOPPED - The database is not running. Use
<function>fbsql_start_db</function> to start the database.
</simpara>
</listitem>
<listitem>
<simpara>
FBSQL_STARTING - The database is starting.
</simpara>
</listitem>
<listitem>
<simpara>
FBSQL_RUNNING - The database is running and can be used to
perform SQL operations.
</simpara>
</listitem>
<listitem>
<simpara>
FBSQL_STOPPING - The database is stopping.
</simpara>
</listitem>
<listitem>
<simpara>
FBSQL_NOEXEC - FBExec is not running on the server and it is not
possible to get the status of the database.
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
See also: <function>fbsql_start_db</function> and
<function>fbsql_stop_db</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-drop-db">
<refnamediv>
<refname>fbsql_drop_db</refname>
<refpurpose>Drop (delete) a FrontBase database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_drop_db</function></funcdef>
<paramdef>string <parameter>database_name</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on failure.
</para>
<para>
<function>fbsql_drop_db</function> attempts to drop (remove) an
entire database from the server associated with the specified
link identifier.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-errno">
<refnamediv>
<refname>fbsql_errno</refname>
<refpurpose>
Returns the numerical value of the error message from previous
FrontBase operation
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>fbsql_errno</function></funcdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the error number from the last fbsql function, or
<literal>0</literal> (zero) if no error occurred.
</para>
<para>
Errors coming back from the fbsql database backend dont issue
warnings. Instead, use <function>fbsql_errno</function> to
retrieve the error code. Note that this function only returns the
error code from the most recently executed fbsql function (not
including <function>fbsql_error</function> and
<function>fbsql_errno</function>), so if you want to use it, make
sure you check the value before calling another fbsql function.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
fbsql_connect("marliesle");
echo fbsql_errno().": ".fbsql_error()."<BR>";
fbsql_select_db("nonexistentdb");
echo fbsql_errno().": ".fbsql_error()."<BR>";
$conn = fbsql_query("SELECT * FROM nonexistenttable;");
echo fbsql_errno().": ".fbsql_error()."<BR>";
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
See also: <function>fbsql_error</function> and
<function>fbsql_warnings</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-error">
<refnamediv>
<refname>fbsql_error</refname>
<refpurpose>
Returns the text of the error message from previous FrontBase
operation
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_error</function></funcdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the error text from the last fbsql function, or
<literal>''</literal> (the empty string) if no error occurred.
</para>
<para>
Errors coming back from the fbsql database backend dont issue
warnings. Instead, use <function>fbsql_error</function> to
retrieve the error text. Note that this function only returns the
error text from the most recently executed fbsql function (not
including <function>fbsql_error</function> and
<function>fbsql_errno</function>), so if you want to use it, make
sure you check the value before calling another fbsql function.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
fbsql_connect("marliesle");
echo fbsql_errno().": ".fbsql_error()."<BR>";
fbsql_select_db("nonexistentdb");
echo fbsql_errno().": ".fbsql_error()."<BR>";
$conn = fbsql_query("SELECT * FROM nonexistenttable;");
echo fbsql_errno().": ".fbsql_error()."<BR>";
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
See also: <function>fbsql_errno</function> and
<function>fbsql_warnings</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-fetch-array">
<refnamediv>
<refname>fbsql_fetch_array</refname>
<refpurpose>
Fetch a result row as an associative array, a numeric array, or
both
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>fbsql_fetch_array</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int
<parameter>
<optional>result_type</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns an array that corresponds to the fetched row, or &false;
if there are no more rows.
</para>
<para>
<function>fbsql_fetch_array</function> is an extended version of
<function>fbsql_fetch_row</function>. In addition to storing the
data in the numeric indices of the result array, it also stores
the data in associative indices, using the field names as keys.
</para>
<para>
If two or more columns of the result have the same field names,
the last column will take precedence. To access the other column(s)
of the same name, you must the numeric index of the column or
make an alias for the column.
<informalexample>
<programlisting>
<![CDATA[
select t1.f1 as foo t2.f1 as bar from t1, t2
]]>
</programlisting>
</informalexample>
</para>
<para>
An important thing to note is that using
<function>fbsql_fetch_array</function> is NOT significantly
slower than using <function>fbsql_fetch_row</function>, while it
provides a significant added value.
</para>
<para>
The optional second argument <parameter>result_type</parameter>
in <function>fbsql_fetch_array</function> is a constant and can
take the following values: FBSQL_ASSOC, FBSQL_NUM, and
FBSQL_BOTH.
</para>
<para>
For further details, see also
<function>fbsql_fetch_row</function> and
<function>fbsql_fetch_assoc</function>.
</para>
<example>
<title><function>fbsql_fetch_array</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
fbsql_connect ($host, $user, $password);
$result = fbsql_db_query ("database","select user_id, fullname from table");
while ($row = fbsql_fetch_array ($result)) {
echo "user_id: ".$row["user_id"]."<br>\n";
echo "user_id: ".$row[0]."<br>\n";
echo "fullname: ".$row["fullname"]."<br>\n";
echo "fullname: ".$row[1]."<br>\n";
}
fbsql_free_result ($result);
?>
]]>
</programlisting>
</example>
</refsect1>
</refentry>
<refentry id="function.fbsql-fetch-assoc">
<refnamediv>
<refname>fbsql_fetch_assoc</refname>
<refpurpose>
Fetch a result row as an associative array
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>fbsql_fetch_assoc</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns an associative array that corresponds to the fetched row,
or &false; if there are no more rows.</para>
<para>
<function>fbsql_fetch_assoc</function> is equivalent to calling
<function>fbsql_fetch_array</function> with FBSQL_ASSOC for the
optional second parameter. It only returns an associative array.
This is the way <function>fbsql_fetch_array</function> originally
worked. If you need the numeric indices as well as the
associative, use <function>fbsql_fetch_array</function>.
</para>
<para>
If two or more columns of the result have the same field names,
the last column will take precedence. To access the other column(s)
of the same name, you must use <function>fbsql_fetch_array</function> and
have it return the numeric indices as well.
</para>
<para>
An important thing to note is that using
<function>fbsql_fetch_assoc</function> is NOT significantly
slower than using <function>fbsql_fetch_row</function>, while it
provides a significant added value.
</para>
<para>
For further details, see also
<function>fbsql_fetch_row</function> and
<function>fbsql_fetch_array</function>.
</para>
<example>
<title><function>fbsql_fetch_assoc</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
fbsql_connect ($host, $user, $password);
$result = fbsql_db_query ("database","select * from table");
while ($row = fbsql_fetch_assoc ($result)) {
echo $row["user_id"];
echo $row["fullname"];
}
fbsql_free_result ($result);
?>
]]>
</programlisting>
</example>
</refsect1>
</refentry>
<refentry id="function.fbsql-fetch-field">
<refnamediv>
<refname>fbsql_fetch_field</refname>
<refpurpose>
Get column information from a result and return as an object
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>object <function>fbsql_fetch_field</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int
<parameter>
<optional>field_offset</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns an object containing field information.
</para>
<para>
<function>fbsql_fetch_field</function> can be used in order to
obtain information about fields in a certain query result. If
the field offset isn't specified, the next field that wasn't yet
retrieved by <function>fbsql_fetch_field</function> is retrieved.
</para>
<para>
The properties of the object are:
<itemizedlist>
<listitem>
<simpara>
name - column name
</simpara>
</listitem>
<listitem>
<simpara>
table - name of the table the column belongs to
</simpara>
</listitem>
<listitem>
<simpara>
max_length - maximum length of the column
</simpara>
</listitem>
<listitem>
<simpara>
not_null - 1 if the column cannot be &null;
</simpara>
</listitem>
<listitem>
<simpara>
type - the type of the column
</simpara>
</listitem>
</itemizedlist>
</para>
<example>
<title><function>fbsql_fetch_field</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
fbsql_connect ($host, $user, $password)
or die ("Could not connect");
$result = fbsql_db_query ("database", "select * from table")
or die ("Query failed");
# get column metadata
$i = 0;
while ($i < fbsql_num_fields ($result)) {
echo "Information for column $i:<BR>\n";
$meta = fbsql_fetch_field ($result);
if (!$meta) {
echo "No information available<BR>\n";
}
echo "<PRE>
max_length: $meta->max_length
name: $meta->name
not_null: $meta->not_null
table: $meta->table
type: $meta->type
</PRE>";
$i++;
}
fbsql_free_result ($result);
?>
]]>
</programlisting>
</example>
<para>
See also <function>fbsql_field_seek</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-fetch-lengths">
<refnamediv>
<refname>fbsql_fetch_lengths</refname>
<refpurpose>
Get the length of each output in a result
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>fbsql_fetch_lengths</function></funcdef>
<paramdef>resource
<parameter><optional>result</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: An array that corresponds to the lengths of each field
in the last row fetched by <function>fbsql_fetch_row</function>,
or &false; on error.
</para>
<para>
<function>fbsql_fetch_lengths</function> stores the lengths of
each result column in the last row returned by
<function>fbsql_fetch_row</function>,
<function>fbsql_fetch_array</function> and
<function>fbsql_fetch_object</function> in an array, starting at
offset 0.
</para>
<para>
See also: <function>fbsql_fetch_row</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-fetch-object">
<refnamediv>
<refname>fbsql_fetch_object</refname>
<refpurpose>Fetch a result row as an object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>object <function>fbsql_fetch_object</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int
<parameter>
<optional>result_type</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns an object with properties that correspond to the fetched
row, or &false; if there are no more rows.
</para>
<para>
<function>fbsql_fetch_object</function> is similar to
<function>fbsql_fetch_array</function>, with one difference - an
object is returned, instead of an array. Indirectly, that means
that you can only access the data by the field names, and not by
their offsets (numbers are illegal property names).
</para>
<para>
The optional argument <parameter>result_type</parameter> is a
constant and can take the following values: FBSQL_ASSOC,
FBSQL_NUM, and FBSQL_BOTH.
</para>
<para>
Speed-wise, the function is identical to
<function>fbsql_fetch_array</function>, and almost as quick as
<function>fbsql_fetch_row</function> (the difference is
insignificant).
<example>
<title><function>fbsql_fetch_object</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
fbsql_connect ($host, $user, $password);
$result = fbsql_db_query ("database", "select * from table");
while ($row = fbsql_fetch_object ($result)) {
echo $row->user_id;
echo $row->fullname;
}
fbsql_free_result ($result);
?>
]]>
</programlisting>
</example>
</para>
<para>
See also: <function>fbsql_fetch_array</function> and
<function>fbsql_fetch_row</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-fetch-row">
<refnamediv>
<refname>fbsql_fetch_row</refname>
<refpurpose>Get a result row as an enumerated array</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>fbsql_fetch_row</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: An array that corresponds to the fetched row, or &false;
if there are no more rows.
</para>
<para>
<function>fbsql_fetch_row</function> fetches one row of data from
the result associated with the specified result identifier. The
row is returned as an array. Each result column is stored in an
array offset, starting at offset 0.
</para>
<para>
Subsequent call to <function>fbsql_fetch_row</function> would
return the next row in the result set, or &false; if there are no
more rows.
</para>
<para>
See also: <function>fbsql_fetch_array</function>,
<function>fbsql_fetch_object</function>,
<function>fbsql_data_seek</function>,
<function>fbsql_fetch_lengths</function>, and
<function>fbsql_result</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-field-flags">
<refnamediv>
<refname>fbsql_field_flags</refname>
<refpurpose>
Get the flags associated with the specified field in a result
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_field_flags</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_offset</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_field_flags</function> returns the field flags of
the specified field. The flags are reported as a single word
per flag separated by a single space, so that you can split the
returned value using <function>explode</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-field-name">
<refnamediv>
<refname>fbsql_field_name</refname>
<refpurpose>
Get the name of the specified field in a result
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_field_name</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_index</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_field_name</function> returns the name of the
specified field index. <parameter>result</parameter> must be a
valid result identifier and <parameter>field_index</parameter> is
the numerical offset of the field.
</para>
<note>
<para>
<parameter>field_index</parameter> starts at 0.
</para>
<para>
e.g. The index of the third field would actually be 2, the index
of the fourth field would be 3 and so on.
</para>
</note>
<para>
<example>
<title><function>fbsql_field_name</function> example</title>
<programlisting role="php">
<![CDATA[
// The users table consists of three fields:
// user_id
// username
// password.
$res = fbsql_db_query("users", "select * from users", $link);
echo fbsql_field_name($res, 0) . "\n";
echo fbsql_field_name($res, 2);
]]>
</programlisting>
</example>
</para>
<para>
The above example would produce the following output:
<informalexample>
<programlisting>
<![CDATA[
user_id
password
]]>
</programlisting>
</informalexample>
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-field-len">
<refnamediv>
<refname>fbsql_field_len</refname>
<refpurpose>
Returns the length of the specified field
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>fbsql_field_len</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_offset</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_field_len</function> returns the length of the
specified field.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-field-seek">
<refnamediv>
<refname>fbsql_field_seek</refname>
<refpurpose>
Set result pointer to a specified field offset
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_field_seek</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_offset</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Seeks to the specified field offset. If the next call to
<function>fbsql_fetch_field</function> doesn't include a field
offset, the field offset specified in
<function>fbsql_field_seek</function> will be returned.
</para>
<para>
See also: <function>fbsql_fetch_field</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-field-table">
<refnamediv>
<refname>fbsql_field_table</refname>
<refpurpose>
Get name of the table the specified field is in
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_field_table</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_offset</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the name of the table that the specifed field is
in.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-field-type">
<refnamediv>
<refname>fbsql_field_type</refname>
<refpurpose>
Get the type of the specified field in a result
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_field_type</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_offset</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_field_type</function> is similar to the
<function>fbsql_field_name</function> function. The arguments are
identical, but the field type is returned instead. The field type
will be one of "int", "real", "string", "blob", and others as
detailed in the <ulink url="&url.fbsql.docs;">FrontBase
documentation</ulink>.
<example>
<title><function>fbsql_field_type</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
fbsql_connect ("localhost", "_SYSTEM", "");
fbsql_select_db ("wisconsin");
$result = fbsql_query ("SELECT * FROM onek;");
$fields = fbsql_num_fields ($result);
$rows = fbsql_num_rows ($result);
$i = 0;
$table = fbsql_field_table ($result, $i);
echo "Your '".$table."' table has ".$fields." fields and ".$rows." records <BR>";
echo "The table has the following fields <BR>";
while ($i < $fields) {
$type = fbsql_field_type ($result, $i);
$name = fbsql_field_name ($result, $i);
$len = fbsql_field_len ($result, $i);
$flags = fbsql_field_flags ($result, $i);
echo $type." ".$name." ".$len." ".$flags."<BR>";
$i++;
}
fbsql_close();
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-free-result">
<refnamediv>
<refname>fbsql_free_result</refname>
<refpurpose>Free result memory</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_free_result</function></funcdef>
<paramdef>int <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_free_result</function> will free all memory
associated with the result identifier <parameter>result</parameter>.
</para>
<para>
<function>fbsql_free_result</function> only needs to be called if
you are concerned about how much memory is being used for queries
that return large result sets. All associated result memory is
automatically freed at the end of the script's execution.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-insert-id">
<refnamediv>
<refname>fbsql_insert_id</refname>
<refpurpose>
Get the id generated from the previous INSERT operation
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>fbsql_insert_id</function></funcdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_insert_id</function> returns the ID generated for
an column defined as DEFAULT UNIQUE by the previous INSERT query
using the given <parameter>link_identifier</parameter>. If
<parameter>link_identifier</parameter> isn't specified, the last
opened link is assumed.
</para>
<para>
<function>fbsql_insert_id</function> returns 0 if the previous
query does not generate an DEFAULT UNIQUE value. If you need to
save the value for later, be sure to call fbsql_insert_id()
immediately after the query that generates the value.
</para>
<note>
<para>
The value of the FrontBase SQL function
<literal>LAST_INSERT_ID()</literal> always contains the most
recently generated DEFAULT UNIQUE value, and is not reset
between queries.
</para>
</note>
</refsect1>
</refentry>
<refentry id="function.fbsql-list-dbs">
<refnamediv>
<refname>fbsql_list_dbs</refname>
<refpurpose>
List databases available on a FrontBase server
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>fbsql_list_dbs</function></funcdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_list_dbs</function> will return a result pointer
containing the databases available from the current fbsql
daemon. Use the <function>fbsql_tablename</function> function to
traverse this result pointer.
</para>
<para>
<example>
<title><function>fbsql_list_dbs</function> example</title>
<programlisting role="php">
<![CDATA[
$link = fbsql_connect('localhost', 'myname', 'secret');
$db_list = fbsql_list_dbs($link);
while ($row = fbsql_fetch_object($db_list)) {
echo $row->Database . "\n";
}
]]>
</programlisting>
</example>
</para>
<para>
The above example would produce the following output:
<informalexample>
<programlisting>
<![CDATA[
database1
database2
database3
...
]]>
</programlisting>
</informalexample>
</para>
<note>
<para>
The above code would just as easily work with
<function>fbsql_fetch_row</function> or other similar functions.
</para>
</note>
</refsect1>
</refentry>
<refentry id="function.fbsql-list-fields">
<refnamediv>
<refname>fbsql_list_fields</refname>
<refpurpose>List FrontBase result fields</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>fbsql_list_fields</function></funcdef>
<paramdef>string <parameter>database_name</parameter></paramdef>
<paramdef>string <parameter>table_name</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_list_fields</function> retrieves information
about the given tablename. Arguments are the database name and
the table name. A result pointer is returned which can be used
with <function>fbsql_field_flags</function>,
<function>fbsql_field_len</function>,
<function>fbsql_field_name</function>, and
<function>fbsql_field_type</function>.
</para>
<para>
A result identifier is a positive integer. The function returns
-1 if a error occurs. A string describing the error will be
placed in <literal>$phperrmsg</literal>, and unless the function
was called as <literal>@fbsql()</literal> then this error string
will also be printed out.
</para>
<para>
<example>
<title><function>fbsql_list_fields</function> example</title>
<programlisting role="php">
<![CDATA[
$link = fbsql_connect('localhost', 'myname', 'secret');
$fields = fbsql_list_fields("database1", "table1", $link);
$columns = fbsql_num_fields($fields);
for ($i = 0; $i < $columns; $i++) {
echo fbsql_field_name($fields, $i) . "\n";;
}
]]>
</programlisting>
</example>
</para>
<para>
The above example would produce the following output:
<informalexample>
<programlisting>
<![CDATA[
field1
field2
field3
...
]]>
</programlisting>
</informalexample>
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-list-tables">
<refnamediv>
<refname>fbsql_list_tables</refname>
<refpurpose>List tables in a FrontBase database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>fbsql_list_tables</function></funcdef>
<paramdef>string <parameter>database</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_list_tables</function> takes a database name and
returns a result pointer much like the
<function>fbsql_db_query</function> function. The
<function>fbsql_tablename</function> function should be used to
extract the actual table names from the result pointer.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-next-result">
<refnamediv>
<refname>fbsql_next_result</refname>
<refpurpose>
Move the internal result pointer to the next result
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool
<function>fbsql_next_result</function>
</funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
When sending more than one SQL statement to the server or
executing a stored procedure with multiple results will cause the
server to return multiple result sets. This function will test
for additional results available form the server. If an
additional result set exists it will free the existing result set
and prepare to fetch the words from the new result set. The
function will return &true; if an additional result set was
available or &false; otherwise.
</para>
<example>
<title><function>fbsql_next_result</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_connect ("localhost", "_SYSTEM", "secret");
fbsql_select_db("MyDB", $link);
$SQL = "Select * from table1; select * from table2;";
$rs = fbsql_query($SQL, $link);
do {
while ($row = fbsql_fetch_row($rs)) {
}
} while (fbsql_next_result($rs));
fbsql_free_result($rs);
fbsql_close ($link);
?>
]]>
</programlisting>
</example>
</refsect1>
</refentry>
<refentry id="function.fbsql-num-fields">
<refnamediv>
<refname>fbsql_num_fields</refname>
<refpurpose>Get number of fields in result</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>fbsql_num_fields</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_num_fields</function> returns the number of
fields in a result set.
</para>
<para>
See also:
<function>fbsql_db_query</function>,
<function>fbsql_query</function>,
<function>fbsql_fetch_field</function>, and
<function>fbsql_num_rows</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-num-rows">
<refnamediv>
<refname>fbsql_num_rows</refname>
<refpurpose>Get number of rows in result</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>fbsql_num_rows</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_num_rows</function> returns the number of rows in
a result set. This command is only valid for SELECT statements.
To retrieve the number of rows returned from a INSERT, UPDATE or
DELETE query, use <function>fbsql_affected_rows</function>.
<example>
<title><function>fbsql_num_rows</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_connect("localhost", "username", "password");
fbsql_select_db("database", $link);
$result = fbsql_query("SELECT * FROM table1;", $link);
$num_rows = fbsql_num_rows($result);
echo "$num_rows Rows\n";
?>
]]>
</programlisting>
</example>
</para>
<para>
See also: <function>fbsql_affected_rows</function>,
<function>fbsql_connect</function>,
<function>fbsql_select_db</function>, and
<function>fbsql_query</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-pconnect">
<refnamediv>
<refname>fbsql_pconnect</refname>
<refpurpose>
Open a persistent connection to a FrontBase Server
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>fbsql_pconnect</function></funcdef>
<paramdef>string
<parameter><optional>hostname</optional></parameter>
</paramdef>
<paramdef>string
<parameter><optional>username</optional></parameter>
</paramdef>
<paramdef>string
<parameter><optional>password</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: A positive FrontBase persistent link identifier on
success, or &false; on error.
</para>
<para>
<function>fbsql_pconnect</function> establishes a connection
to a FrontBase server. The following defaults are assumed for
missing optional parameters: <parameter>host</parameter> =
'localhost', <parameter>username</parameter> = "_SYSTEM"
and <parameter>password</parameter> = empty password.
</para>
<para>
<function>fbsql_pconnect</function> acts very much like
<function>fbsql_connect</function> with two major differences.
</para>
<para>
To set Frontbase server port number, use
<function>fbsql_select_db</function>.
</para>
<para>
First, when connecting, the function would first try to find a
(persistent) link that's already open with the same host,
username and password. If one is found, an identifier for it
will be returned instead of opening a new connection.
</para>
<para>
Second, the connection to the SQL server will not be closed when
the execution of the script ends. Instead, the link will remain
open for future use.
</para>
<para>
This type of links is therefore called 'persistent'.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-query">
<refnamediv>
<refname>fbsql_query</refname>
<refpurpose>Send a FrontBase query</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>fbsql_query</function></funcdef>
<paramdef>string <parameter>query</parameter></paramdef>
<paramdef>resource
<parameter><optional>link_identifier</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_query</function> sends a query to the currently
active database on the server that's associated with the
specified link identifier. If
<parameter>link_identifier</parameter> isn't specified, the last
opened link is assumed. If no link is open, the function tries
to establish a link as if <function>fbsql_connect</function> was
called with no arguments, and use it.
</para>
<note>
<para>
The query string shall always end with a semicolon.
</para>
</note>
<para>
<function>fbsql_query</function> returns &true; (non-zero) or &false;
to indicate whether or not the query succeeded. A return value
of &true; means that the query was legal and could be executed by
the server. It does not indicate anything about the number of
rows affected or returned. It is perfectly possible for a query
to succeed but affect no rows or return no rows.
</para>
<para>
The following query is syntactically invalid, so
<function>fbsql_query</function> fails and returns &false;:
<example>
<title><function>fbsql_query</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$result = fbsql_query ("SELECT * WHERE 1=1")
or die ("Invalid query");
?>
]]>
</programlisting>
</example>
</para>
<para>
The following query is semantically invalid if
<literal>my_col</literal> is not a column in the table
<literal>my_tbl</literal>, so <function>fbsql_query</function>
fails and returns &false;:
<example>
<title><function>fbsql_query</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$result = fbsql_query ("SELECT my_col FROM my_tbl")
or die ("Invalid query");
?>
]]>
</programlisting>
</example>
</para>
<para>
<function>fbsql_query</function> will also fail and return
&false; if you don't have permission to access the table(s)
referenced by the query.
</para>
<para>
Assuming the query succeeds, you can call
<function>fbsql_num_rows</function> to find out how many rows
were returned for a SELECT statment or
<function>fbsql_affected_rows</function> to find out how many
rows were affected by a DELETE, INSERT, REPLACE, or UPDATE
statement.
</para>
<para>
For SELECT statements, <function>fbsql_query</function> returns a
new result identifier that you can pass to
<function>fbsql_result</function>. When you are done with the
result set, you can free the resources associated with it by
calling <function>fbsql_free_result</function>. Although, the
memory will automatically be freed at the end of the script's
execution.
</para>
<para>
See also: <function>fbsql_affected_rows</function>,
<function>fbsql_db_query</function>,
<function>fbsql_free_result</function>,
<function>fbsql_result</function>,
<function>fbsql_select_db</function>, and
<function>fbsql_connect</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-read-blob">
<refnamediv>
<refname>fbsql_read_blob</refname>
<refpurpose>Read a BLOB from the database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_read_blob</function></funcdef>
<paramdef>string <parameter>blob_handle</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: A string containing the BLOB specified by blob_handle.
</para>
<para>
<function>fbsql_read_blob</function> reads BLOB data from the
database. If a select statement contains BLOB and/or BLOB
columns FrontBase will return the data directly when data is
fetched. This default behavior can be changed with
<function>fbsql_set_lob_mode</function> so the fetch functions
will return handles to BLOB and CLOB data. If a handle is
fetched a user must call <function>fbsql_read_blob</function> to
get the actual BLOB data from the database.
</para>
<example>
<title><function>fbsql_read_blob</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
or die ("Could not connect");
$sql = "SELECT BLOB_COLUMN FROM BLOB_TABLE;";
$rs = fbsql_query($sql, $link);
$row_data = fbsql_fetch_row($rs);
// $row_data[0] will now contain the blob data for teh first row
fbsql_free_result($rs);
$rs = fbsql_query($sql, $link);
fbsql_set_lob_mode($rs, FBSQL_LOB_HANDLE);
$row_data = fbsql_fetch_row($rs);
// $row_data[0] will now contain a handle to the BLOB data in the first row
$blob_data = fbsql_read_blob($row_data[0]);
fbsql_free_result($rs);
?>
]]>
</programlisting>
</example>
<para>
See also: <function>fbsql_create_blob</function>,
<function>fbsql_read_blob</function>,
<function>fbsql_read_clob</function>, and
<function>fbsql_set_lob_mode</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-read-clob">
<refnamediv>
<refname>fbsql_read_clob</refname>
<refpurpose>Read a CLOB from the database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_read_clob</function></funcdef>
<paramdef>string <parameter>clob_handle</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: A string containing the CLOB specified by clob_handle.
</para>
<para>
<function>fbsql_read_clob</function> reads CLOB data from the
database. If a select statement contains BLOB and/or CLOB
columns FrontBase will return the data directly when data is
fetched. This default behavior can be changed with
<function>fbsql_set_lob_mode</function> so the fetch functions
will return handles to BLOB and CLOB data. If a handle is
fetched a user must call <function>fbsql_read_clob</function> to
get the actual CLOB data from the database.
</para>
<example>
<title><function>fbsql_read_clob</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
or die ("Could not connect");
$sql = "SELECT CLOB_COLUMN FROM CLOB_TABLE;";
$rs = fbsql_query($sql, $link);
$row_data = fbsql_fetch_row($rs);
// $row_data[0] will now contain the clob data for teh first row
fbsql_free_result($rs);
$rs = fbsql_query($sql, $link);
fbsql_set_lob_mode($rs, FBSQL_LOB_HANDLE);
$row_data = fbsql_fetch_row($rs);
// $row_data[0] will now contain a handle to the CLOB data in the first row
$clob_data = fbsql_read_clob($row_data[0]);
fbsql_free_result($rs);
?>
]]>
</programlisting>
</example>
<para>
See also: <function>fbsql_create_blob</function>,
<function>fbsql_read_blob</function>,
<function>fbsql_read_clob</function>, and
<function>fbsql_set_lob_mode</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-result">
<refnamediv>
<refname>fbsql_result</refname>
<refpurpose>Get result data</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>fbsql_result</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
<paramdef>mixed
<parameter>
<optional>field</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_result</function> returns the contents of one
cell from a FrontBase result set. The field argument can be the
field's offset, or the field's name, or the field's table dot
field's name (tabledname.fieldname). If the column name has been
aliased ('select foo as bar from...'), use the alias instead of
the column name.
</para>
<para>
When working on large result sets, you should consider using one
of the functions that fetch an entire row (specified below). As
these functions return the contents of multiple cells in one
function call, they're MUCH quicker than
<function>fbsql_result</function>. Also, note that specifying a
numeric offset for the field argument is much quicker than
specifying a fieldname or tablename.fieldname argument.
</para>
<para>
Calls to <function>fbsql_result</function> should not be mixed
with calls to other functions that deal with the result set.
</para>
<para>
Recommended high-performance alternatives:
<function>fbsql_fetch_row</function>,
<function>fbsql_fetch_array</function>, and
<function>fbsql_fetch_object</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-rollback">
<refnamediv>
<refname>fbsql_rollback</refname>
<refpurpose>Rollback a transaction to the database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_rollback</function></funcdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on failure.
</para>
<para>
<function>fbsql_rollback</function> ends the current transaction by
rolling back all statements issued since last commit.
This command is only needed if autocommit is set to false.
</para>
<para> See also:
<function>fbsql_autocommit</function> and
<function>fbsql_commit</function>
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-set-lob-mode">
<refnamediv>
<refname>fbsql_set_lob_mode</refname>
<refpurpose>
Set the LOB retreive mode for a FrontBase result set
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_set_lob_mode</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>string <parameter>database_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on error.
</para>
<para>
<function>fbsql_set_lob_mode</function> sets the mode for
retreiving LOB data from the database. When BLOB and CLOB data is
stored in FrontBase it can be stored direct or indirect. Direct
stored LOB data will allways be fetched no matter the setting of
the lob mode. If the LOB data is less than 512 bytes it will
allways be stored directly.
<itemizedlist>
<listitem>
<simpara>
FBSQL_LOB_DIRECT - LOB data is retreived directly. When data
is fetched from the database with
<function>fbsql_fetch_row</function>, and other fetch
functions, all CLOB and BLOB columns will be returned as
ordinary columns. This is the default value on a new
FrontBase result.
</simpara>
</listitem>
<listitem>
<simpara>
FBSQL_LOB_HANDLE - LOB data is retreived as handles to the
data. When data is fetched from the database with
<function>fbsql_fetch_row </function>, and other fetch
functions, LOB data will be returned as a handle to the data
if the data is stored indirect or the data if it is stored
direct. If a handle is returned it will be a 27 byte string
formated as "@'000000000000000000000000'".
</simpara>
</listitem>
</itemizedlist>
</para>
<para> See also:
<function>fbsql_create_blob</function>,
<function>fbsql_create_clob</function>,
<function>fbsql_read_blob</function>, and
<function>fbsql_read_clob</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-select-db">
<refnamediv>
<refname>fbsql_select_db</refname>
<refpurpose>Select a FrontBase database</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_select_db</function></funcdef>
<paramdef>string <parameter>database_name</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on error.
</para>
<para>
<function>fbsql_select_db</function> sets the current active
database on the server that's associated with the specified link
identifier. If no link identifier is specified, the last opened
link is assumed. If no link is open, the function will try to
establish a link as if <function>fbsql_connect</function> was
called, and use it.
</para>
<para>
The client contacts FBExec to obtain the port number to use for
the connection to the database. If the database name is a number
the system will use that as a port number and it will not ask
FBExec for the port number. The FrontBase server can be stared
as FRontBase -FBExec=No -port=&lt;port number&gt; &lt;database
name&gt;.
</para>
<para>
Every subsequent call to <function>fbsql_query</function> will be
made on the active database.
</para>
<para> See also:
<function>fbsql_connect</function>,
<function>fbsql_pconnect</function>, and
<function>fbsql_query</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-start-db">
<refnamediv>
<refname>fbsql_start_db</refname>
<refpurpose>Start a database on local or remote server</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_start_db</function></funcdef>
<paramdef>string <parameter>database_name</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on failure.
</para>
<para>
<function>fbsql_start_db</function>
</para>
<para>
See also: <function>fbsql_db_status</function> and
<function>fbsql_stop_db</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-stop-db">
<refnamediv>
<refname>fbsql_stop_db</refname>
<refpurpose>Stop a database on local or remote server</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_stop_db</function></funcdef>
<paramdef>string <parameter>database_name</parameter></paramdef>
<paramdef>resource
<parameter>
<optional>link_identifier</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: &true; on success, &false; on failure.
</para>
<para>
<function>fbsql_stop_db</function>
</para>
<para>
See also: <function>fbsql_db_status</function> and
<function>fbsql_start_db</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-tablename">
<refnamediv>
<refname>fbsql_tablename</refname>
<refpurpose>Get table name of field</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_tablename</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>i</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>fbsql_tablename</function> takes a result pointer
returned by the <function>fbsql_list_tables</function> function
as well as an integer index and returns the name of a table. The
<function>fbsql_num_rows</function> function may be used to
determine the number of tables in the result pointer.
<example>
<title><function>fbsql_tablename</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
fbsql_connect ("localhost", "_SYSTEM", "");
$result = fbsql_list_tables ("wisconsin");
$i = 0;
while ($i < fbsql_num_rows ($result)) {
$tb_names[$i] = fbsql_tablename ($result, $i);
echo $tb_names[$i] . "<BR>";
$i++;
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.fbsql-warnings">
<refnamediv>
<refname>fbsql_warnings</refname>
<refpurpose>Enable or disable FrontBase warnings</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>fbsql_warnings</function></funcdef>
<paramdef>bool
<parameter>
<optional>OnOff</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns &true; if warnings is turned on otherwise &false;.
</para>
<para>
<function>fbsql_warnings</function> enables or disables FrontBase
warnings.
</para>
</refsect1>
</refentry>
<refentry id='function.fbsql-database'>
<refnamediv>
<refname>fbsql_database</refname>
<refpurpose>
No description given yet
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_database</function></funcdef>
<paramdef>resource <parameter>link_identifier</parameter></paramdef>
<paramdef>string <parameter><optional>database</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.fbsql-get-autostart-info'>
<refnamediv>
<refname>fbsql_get_autostart_info</refname>
<refpurpose>
No description given yet
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>fbsql_get_autostart_info</function></funcdef>
<paramdef>resource <parameter><optional>link_identifier</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.fbsql-hostname'>
<refnamediv>
<refname>fbsql_hostname</refname>
<refpurpose>
No description given yet
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_hostname</function></funcdef>
<paramdef>resource <parameter>link_identifier</parameter></paramdef>
<paramdef>string <parameter><optional>host_name</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.fbsql-password'>
<refnamediv>
<refname>fbsql_password</refname>
<refpurpose>
No description given yet
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_password</function></funcdef>
<paramdef>resource <parameter>link_identifier</parameter></paramdef>
<paramdef>string <parameter><optional>password</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.fbsql-set-transaction'>
<refnamediv>
<refname>fbsql_set_transaction</refname>
<refpurpose>
Set the transaction locking and isolation
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>fbsql_set_transaction</function></funcdef>
<paramdef>resource <parameter>link_identifier</parameter></paramdef>
<paramdef>int <parameter>Locking</parameter></paramdef>
<paramdef>int <parameter>Isolation</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.fbsql-username'>
<refnamediv>
<refname>fbsql_username</refname>
<refpurpose>
No description given yet
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>fbsql_username</function></funcdef>
<paramdef>resource <parameter>link_identifier</parameter></paramdef>
<paramdef>string <parameter><optional>username</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->