A simple script to walk through an MSSQL server.
I'm using PHP 4.06 and Freetds 5.1 on Solaris 2.7 and Apache 1.3
Several of the msql_ functions seem to be broken/missing.
This is what I found to work.
<?php
// --------------------------------------------------------
// URL http://server/mssqltest.php?DB=Database&table=TableName
// --------------------------------------------------------
// Default settings: edit to meet your needs
if (!($user)) $user=sa;
if (!($pass)) $pass="password";
if (!($host)) $host="acer900";
// --------------------------------------------------
// connect to mssql server
$connect = mssql_connect($host,$user,$pass) or die ($host." not accessible.");
// select the database
if ($DB) mssql_select_db($DB)or die('USE '.$DB.' failed!');
if (!($table)) {
$query="EXEC sp_tables \"%\",\"%\",\"".$DB."\",\"'TABLE'\"";
$linkcol=2;
$linkcol="TABLE_NAME";
$linkformat=" <a href=\"%s?DB=".$DB."&table=%s\">%s</a> ";
}else{ // tables and DB - Get DATA
$query="SELECT * FROM ".$table;
$linkformat=" <a href=\"%s\">%s</a> ";
}
if (!($DB)) {
$query="EXEC sp_databases";
$linkcol=0;
$linkcol="DATABASE_NAME";
$linkformat="<a href=\"%s?DB=%s\">%s</a>";
}
// run query
echo $query."<br>";
$result = mssql_query( $query) or die('Query failed!');
$fields = mssql_num_fields ($result) or die("Num Fields Failed");
$rows = mssql_num_rows ($result);
echo "<br>Rows ".$rows." Fields ".$fields."<br>";
echo "<TABLE border=1><tr>";
// get field names
for ( $f = 0 ; $f < $fields ; $f++ ){
$name = mssql_fetch_field($result, $f);
echo "<td>".$f.$name->name."</td>";
// Strange here.. without the "X"'s the () is always TRUE??
if ($name->name."X" == $linkcol."X") $linkcol = $f;
}
echo "</tr>";
//Display Data
for ($i = 0; $i < $rows ; $i =$i +1){
for ($f = 0; $f<$fields ; $f++){
$name=mssql_result($result,$i,$f);
if ($f == $linkcol){
printf("<td>".$linkformat."</td>\n",$PHP_SELF,
$name , $name );
}
else{
echo "<td>". $name . "</td>";
}
}
echo "</tr>";
}
echo "</TABLE><br>";
// close connection
mssql_close ($connect);
?>
mssql_field_name
(PHP 4, PHP 5, PECL odbtp >= 1.1.1)
mssql_field_name — Get the name of a field
Descrierea
string mssql_field_name
( resource
$result
[, int $offset = -1
] )
Returns the name of field no. offset in
result.
Parametri
-
result -
The result resource that is being evaluated. This result comes from a call to mssql_query().
-
offset -
The field offset, starts at 0. If omitted, the current field is used.
Valorile întoarse
The name of the specified field index on success sau FALSE în cazul eșecului.
Exemple
Example #1 mssql_field_name() example
<?php
// Send a select query to MSSQL
$query = mssql_query('SELECT [username], [name], [email] FROM [php].[dbo].[userlist]');
echo 'Result set contains the following field(s):', PHP_EOL;
// Dump all field names in result
for ($i = 0; $i < mssql_num_fields($query); ++$i) {
echo ' - ' . mssql_field_name($query, $i), PHP_EOL;
}
// Free the query result
mssql_free_result($query);
?>
Exemplul de mai sus va afișa ceva similar cu:
Result set contains the following field(s): - username - name - email
Vedeți de asemenea
- mssql_field_length() - Get the length of a field
- mssql_field_type() - Gets the type of a field
harold at worby dot dns2go dot com ¶
11 years ago
tengel at sonic dot net ¶
12 years ago
This function isn't supported (PHP 4.0.2) if using Sybase/FreeTDS to access SQLServer (linux/solaris/bsd/etc). Instead, use "mssql_fetch_field()" like so:
$field_name = mssql_fetch_field($query_result, $field_number);
print $field_name->name;
php at electricsurfer dot com ¶
9 years ago
WARNING: as of PHP 4.3.2
Only returns 1st 30 characters of fieldname.
