|
|
 |
mysql_field_flags (PHP 3, PHP 4, PHP 5) mysql_field_flags -- Get the flags associated with the specified field in a result Descriptionstring mysql_field_flags ( resource result, int field_offset )
mysql_field_flags() 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 explode().
Parameters
-
result
The result resource that
is being evaluated. This result comes from a call to
mysql_query(). -
field_offset
The numerical field offset. The
field_offset starts at 0. If
field_offset does not exist, an error of level
E_WARNING is also issued.
Return Values
Returns a string of flags associated with the result, or FALSE on failure.
The following flags are reported, if your version of MySQL
is current enough to support them: "not_null",
"primary_key", "unique_key",
"multiple_key", "blob",
"unsigned", "zerofill",
"binary", "enum",
"auto_increment" and "timestamp".
Examples
Example 1. A mysql_field_flags() example |
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$flags = mysql_field_flags($result, 0);
echo $flags;
print_r(explode(' ', $flags));
?>
|
The above example will output
something similar to: not_null primary_key auto_increment
Array
(
[0] => not_null
[1] => primary_key
[2] => auto_increment
) |
|
NotesNote:
For downward compatibility, the following
deprecated alias may be used:
mysql_fieldflags()
User Contributed Notes
mysql_field_flags
buttrose at unimelb dot edu dot au
20-Oct-2004 09:26
This function is essential for writing a generic table editor (ie one that just takes the name of the table and works out what fields it has, types, sizes etc.). Unfortunately, I am using psotgreSQL not mySql. Postgres has field_type and field_size functions but not as far as I can tell an equivalent of the mysql_field_flags() function. Without it, there is no way I can do generic ADDs and INSERTs.
Anyone know a workaround to get this information (eg is the field a primary key? Can it be NULL? Is it auto_increment?) in Postgres?
Cheers
Rob Buttrose
amir at scrounch dot com
17-Aug-2003 12:39
returns primary keys of a table using 'show keys'
although it is possible to use desc, show keys offers possible enhancements such a getting sequence in index along with it
function getPrimaryKeyOf($table, $link) {
$pk = Array();
$sql = 'SHOW KEYS FROM `'.$table.'`';
$res = mysql_query($table, $link) or die(mysql_error());
while ($row = mysql_fetch_assoc($res)) {
if ($row['Key_name']=='PRIMARY')
array_push($pk, $row['Column_name']);
}
return $pk;
}
simone dot t at betisgroup dot com
10-Apr-2003 06:20
Another examples :
####################################
function field_keys($host, $user, $password, $database, $field ) {
$db_link = mysql_connect($host, $user, $password) or die ("error connect");
mysql_select_db($database,$db_link);
$query="DESC $field";
$results=mysql_query($query);
$i=0;
while ($row=mysql_fetch_array($results)) {
if ($row[Key]=="PRI") {
$array_keys[$i]=$row[Field];
}
$i++;
}
return $array_keys;
}
####################################
//Example of Main...
$tmp = field_keys("localhost", "myuser", "mypassword", "mydb", "field_name" );
// ...loop through array...
foreach ( $tmp as $array_tmp){
print "<br>";
print $array_tmp;
print "<br>";
}
justin DOT flavin AT ntlworld DOT com
06-Dec-2002 12:36
Sometimes, when writing a generic function or class, you want your script to be able to determine what the primary key of a table is.
/* usual MySQL stuff */
$query="DESC UsersTable";
$results=mysql_query($query);
while ($row=mysql_fetch_array($results))
{
if ($row[Type]="PRI")
{
print "I found the primary key! <br>";
$UserKey=$row[Field];
print $row[Field];
/* drop out , as we've found the key */
exit;
}
}
..... later on we might have something like
< some sort of loop through records >
print "<a href='View_User_record.php?userkey=$UserKey'> Users Name </a>";
<end loop>
What's also interesting is the useful data you can get from
a DESC query.
The following prints out the array values grabbed by mysql_fetch_array on a DESC query - VERY useful stuff!!!
/* usual MySQL stuff */
$query="DESC UsersTable";
$results=mysql_query($query);
while ($row=mysql_fetch_array($results))
{
print "<pre>";
print_r ($row);
print "</pre>";
}
jakemsr at jakemsr dot com
31-Oct-2002 02:32
I didn't find anything to get the valid values for
ENUM or SET column types, so I came up with the
following
function mysql_enum_values($table, $field)
{
$sql = "SHOW COLUMNS FROM $table LIKE '$field'";
$sql_res = mysql_query($sql)
or die("Could not query:\n$sql");
$row = mysql_fetch_assoc($sql_res);
mysql_free_result($sql_res);
return(explode("','",
preg_replace("/.*\('(.*)'\)/", "\\1",
$row["Type"])));
}
cufarley at nirvanet dot net
11-Jul-2001 07:36
Using the "DESC TableName" command may also do the trick and is a bit shorter.
jurgen at alienguitar dot com
10-Jun-2001 06:50
The previous problem to get the default values of a column:
Use the following query and parse the 'Default' column:
"SHOW COLUMNS FROM TableName"
or for a single entry:
"SHOW COLUMNS FROM TableName LIKE 'column'"
It will give you also values for Type, Null, Key and Extra (check with mysql program first, so you see what you get ;-)
| |