Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : ODBC Functions (Unified) : odbc_tables

odbc_tables

Get the list of table names stored in a specific data source (PHP 4, PHP 5)
resource odbc_tables ( resource connection_id [, string qualifier [, string owner [, string name [, string types]]]] )

Lists all tables in the requested range. Returns an ODBC result identifier containing the information or FALSE on failure.

The result set has the following columns:

  • TABLE_QUALIFIER
  • TABLE_OWNER
  • TABLE_NAME
  • TABLE_TYPE
  • REMARKS

The result set is ordered by TABLE_TYPE, TABLE_QUALIFIER, TABLE_OWNER and TABLE_NAME.

The owner and name arguments accept search patterns ('%' to match zero or more characters and '_' to match a single character).

To support enumeration of qualifiers, owners, and table types, the following special semantics for the qualifier, owner, name, and table_type are available:

  • If qualifier is a single percent character (%) and owner and name are empty strings, then the result set contains a list of valid qualifiers for the data source. (All columns except the TABLE_QUALIFIER column contain NULLs.)
  • If owner is a single percent character (%) and qualifier and name are empty strings, then the result set contains a list of valid owners for the data source. (All columns except the TABLE_OWNER column contain NULLs.)
  • If table_type is a single percent character (%) and qualifier, owner and name are empty strings, then the result set contains a list of valid table types for the data source. (All columns except the TABLE_TYPE column contain NULLs.)

If table_type is not an empty string, it must contain a list of comma-separated values for the types of interest; each value may be enclosed in single quotes (') or unquoted. For example, "'TABLE','VIEW'" or "TABLE, VIEW". If the data source does not support a specified table type, odbc_tables() does not return any results for that type.

See also odbc_tableprivileges() to retrieve associated privileges.

Examples ( Source code ) » odbc_tables

<?php
$conn 
odbc_connect("$database""$username""$password");
$tablelist odbc_tables($conn);
while (
odbc_fetch_row($tablelist)) {
echo 
odbc_result_all($tablelist);
}
?>

Code Examples / Notes » odbc_tables

iggvopvantoodlwin

With regard to the note made on results not working.
Test the database with the easy:
odbc_result_all(odbc_tables($db));
$db is obviously a connected batadase. Then start to experiment:
if(!$odbcr=odbc_tables($db,"udb","", "%", "'TABLE'"))
"udb" is the DNS - aka 'name of my ODBC database in the Windows ODBC thingamy'. In result_all the full path was shown but I just used the name I assigned; either should work.
The second parameter "" is listed by result_all as "TABLE_SCHEM" and all items were "NULL", so I have put "".
The third parameter is "%". According to result_all this col is "TABLE_NAME", so I could have put the name of one of my tables, i.e. "Address".
In my case I have an Access database setup with several tables. In ODBC I have created a link. Running the all on everything result above shows a set of system tables which I do not need to know about at this point so I look at the result and then build my new table check using the "TABLE" string as the tables I am interested in are listed as "TABLE" under their "TABLE_TYPE" column.


fmk

use odbc_tables($con, "%") to get a list of all available catalogs (databases).
use odbc_tables($con, "", "%") to get a list of all schemas available.
use odbc_tables($con, "", "", "", "%") to get a list of all table types available.
use odbc_tables($con, "my catalog", "my schema", "%", "'TABLE', 'VIEW'") to get a list of all tables available.
using odbc_tables($con, "%", "%", "%", "%") will return an empty array !
Before PHP 4.0.3 uou could use this function with 1 or 5 prarms. From 4.0.3 the function matches the documentation.


pmains

This probably works for a variety of formats, but if you want a list of *just* the table names from an SQL dsn source (I'm using MSSQL), here's the code.
<?php
# ... assign $dsn, $uid, & $pwd ...
$dbh = odbc_connect($dsn, $uid, $pwd);
$result = odbc_tables($dbh);

$tables = array();
while (odbc_fetch_row($result))
array_push($tables, odbc_result($result, "TABLE_NAME") );

foreach( $tables as $t ) {
echo "$t\n";
}
?>


liquidicee

Here's how to get a list of all the tables in your database.. with an actual example of how its done and how to get the results.. and you don't need to put in schema and all that other crap
$conn = odbc_connect("$database", "$username", "$password");
$tablelist = odbc_tables($conn);
while (odbc_fetch_row($tablelist)) {
if (odbc_result($tablelist, 4) == "TABLE")
echo "" . odbc_result($tablelist, 3) ."
";
}
to understand what the above is doing,
use odbc_result_all($tablelist); this will show you EVERYTHING returned by odbc_tables() then you can look through it and see better how odbc_tables() works and what exactly it returns in the string to get a better idea on how to deal with it.
it would have saved me alot of time if i would have just taken a look at the full string returned by odbc_tables(), so i suggest you take the minute or two and look... here is an example of how to do it..which would have been helpful for me ;x.
<?php
$conn = odbc_connect("$database", "$username", "$password");
$tablelist = odbc_tables($conn);
while (odbc_fetch_row($tablelist)) {
echo odbc_result_all($tablelist);
}
?>
hopefully this will help some people.. i have alot more to add about this but no time :(
so again hope this helps.
Liquidice


narcomweb

Here a Code for listing Table names
<?php
$dbh = odbc_connect($dsn, $user, $pwd);
  $result = odbc_tables($dbh);
  $tables = array();
  while (odbc_fetch_row($result)){
    if(odbc_result($result,"TABLE_TYPE")=="TABLE")
      echo"
".odbc_result($result,"TABLE_NAME");
  }
?>
You don't have views or System tables with.
Only simple tables in your database.


kthejoker

A bit of an extension on the previous posts:
I had a whale of a time trying to make this command work .. the parameters were hard to decipher, and frequently my Apache module would just crash and burn when I tried to run it. I FINALLY figured out what was wrong ...
< -- assuming $conn is your odbc_connect --->
$tablelist=odbc_tables($conn);
$tablelist=odbc_result_all($tablelist);
simply doesn't work. I don't understand the exact logistics of it, but the only way I could get it to post the results was this:
$tablelist=odbc_result_all(odbc_tables($conn));
From there it was rather simple to add in parameters that fished out the results I wanted.
To repeat again: I do not understand why the 2nd method works and the 1st one does not. However, having struggled mightily with this function for almost 24 hours, posting this solution has proven to be greatly satisfying.


Change Language


Follow Navioo On Twitter
odbc_autocommit
odbc_binmode
odbc_close_all
odbc_close
odbc_columnprivileges
odbc_columns
odbc_commit
odbc_connect
odbc_cursor
odbc_data_source
odbc_do
odbc_error
odbc_errormsg
odbc_exec
odbc_execute
odbc_fetch_array
odbc_fetch_into
odbc_fetch_object
odbc_fetch_row
odbc_field_len
odbc_field_name
odbc_field_num
odbc_field_precision
odbc_field_scale
odbc_field_type
odbc_foreignkeys
odbc_free_result
odbc_gettypeinfo
odbc_longreadlen
odbc_next_result
odbc_num_fields
odbc_num_rows
odbc_pconnect
odbc_prepare
odbc_primarykeys
odbc_procedurecolumns
odbc_procedures
odbc_result_all
odbc_result
odbc_rollback
odbc_setoption
odbc_specialcolumns
odbc_statistics
odbc_tableprivileges
odbc_tables
eXTReMe Tracker