• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • odbc_primarykeys()

    (PHP 4, PHP 5, PHP 7)

    Gets the primary keys for a table

    说明

    odbc_primarykeys(resource $connection_id,string $qualifier,string $owner,string $table): resource

    Returns a result identifier that can be used to fetch the column names that comprise the primary key for a table.

    参数

    $connection_id

    ODBC 连接标识符,详见odbc_connect()。

    $qualifier
    $owner
    $table

    返回值

    Returns an ODBC result identifier 或者在失败时返回FALSE.

    The result set has the following columns:

    • TABLE_QUALIFIER
    • TABLE_OWNER
    • TABLE_NAME
    • COLUMN_NAME
    • KEY_SEQ
    • PK_NAME
    Sample to get the primary keys of an MSSQL table:
    $cn = odbc_connect( "DSN", "sa", "pwd");
    $rs = odbc_primarykeys( $cn, "database", "dbo", "table_name"); 
    odbc_result_all($rs);
    Responding to devendra_joshi:
    In DB2 Universal Database for Linux, UNIX, and Windows the catalog views are accessed through the SYSCAT schema, not the SYSIBM schema -- so you should be issuing "SELECT * FROM SYSCAT.KEYCOLUSE" to list all of the columns that participate in a given key constraint.
    A complete list of the catalog views for DB2 can be referenced at http://publib.boulder.ibm.com/infocenter/db2help/ by searching for 'catalog views' and selecting the top hit.
    I want a list of primary keys of a table in db2
    by using 
    'select * from SYSIBM.SYSKEYCOLUSE ' query i am getting the result on CLP
    but when i am writing it in PHP as follows it returns 0 ROWS.
    $mstmt="select * from SYSIBM.SYSKEYCOLUSE";
    $b=odbc_exec($conn,$mstmt);
    echo odbc_result_all($b);
    where as if we write this code
    $mstmt="select * from SYSIBM.SYSFUNCTIONS";
    $b=odbc_exec($conn,$mstmt);
    echo odbc_result_all($b);
    it returns the correct data.
    I was trying to find the primary keys from an SQLServer database through the ODBC interface. Funnily enough, the odbc_primarykeys function doesn't work with SQLServer (at least not my implementation of it). Fortunately, the sp_keys query is passed through and the answer returned. This code works (providing you know which database you're dealing with, which is a whole 'nother story).
    // If this is SQLServer, we need to do a special operation to get the
    // primary keys.
    //
    // Looks like the implementers of the ODBC interface just blew this
    // one off, since the database has a query to return the info and the
    // info even comes back with the same column names.
    if ($DBType == "SQLServer")
     $KeySel = odbc_exec($DBConn, "sp_pkeys ".$TableName);
    // Otherwise, ask the database through ODBC for the primary key
    // names.
    else $KeySel = odbc_primarykeys($DBConn, $DatabaseName,
     $DatabaseUser, $TableName);
    while ($KeySel && ($KeyRec = odbc_fetch_array($KeySel)))
     $KeyCol[$KeyRec["KEY_SEQ"]] = $KeyRec["COLUMN_NAME"];