一、数据库操作过程
1、连接
$link = mysql_pconnect($_POST['host'], $_POST['username'], $_POST['password'])
or die("Could not connect: " . mysql_error());
2、选择数据库
mysql_select_db($_POST['database'])
or die("Could not select database: " . mysql_error());
3、执行查询语句
$result = mysql_query($query)
or die("Query failed: " . mysql_error());
4、获取字段名
$numfields = mysql_num_fields($result);
for ($i=0; $i < $numfields; $i++) // Header
{ echo mysql_field_name($result, $i); }
5、获取数据
while ($row = mysql_fetch_row($result)) {
$cnt = count($row);
for ($i=0; $i<$cnt; $i++){
echo($row[$i]);
}
6、释放结果
mysql_free_result($result);
7、关闭数据库连接
mysql_close($link);
二、附件:查询自定义SQL语句的程序
1、说明
用户可以自己定义数据库连接并执行用户的SQL语句,程序显示执行的结果,包括字段名。效果图如下:
程序首先获取用户提交的数据库连接属性,连接数据库后执行用户的SQL语句,获取查询结果的字段名和结果,然后用表格方式显示。
因为表单的Action指向自己,为了标识是否已经提交,在表单中添加了action项目,默认值是"unsubmited",在表单提交时赋值为"submited",只有action="submited"时PHP才执行数据库连接操作,避免第一次进入时获取无效的提交值(POST变量)。
2、代码
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>PHP学习</title>
</head>
<body>
<center>
<table width="80%" border="1" cellpadding="0" cellspacing="1" bordercolor="#000000" >
<caption align="left">
数据库设置
</caption>
<tr>
<td><form id="form1" name="form1" method="post" action="sql.php" onsubmit="this.action.value = 'submitted';return true; //提交时改变action的值">
<p align="left">主 机:
<label>
<input name="host" type="text" value="localhost" />
</label>
</p>
<p align="left">用 户 名:
<label>
<input name="username" type="text" value="root" />
</label>
</p>
<p align="left">密 码:
<label>
<input name="password" type="password" value="zp" />
</label>
</p>
<p align="left">数 据 库:
<label>
<input name="database" type="text" value="sites" />
</label>
</p>
<p align="left">SQL语句:
<label>
<?php
if (isset($_POST['sql']) && $_POST['sql'] != '') {
printf('<input name="sql" type="text" value="'.$_POST['sql'].'" size="50" />');//记录上次执行的SQL语句,其他属性也可以如此处理,因实际应用中变化不经常,所以本人从简处理。
}
else
{
printf('<input name="sql" type="text" value="select * from sets" size="50" />');//第一次进入则设置默认值
}
?>
</label>
</p>
<center>
<input type="hidden" name="action" value="unsubmitted" />
<input type="submit" name="Submit" value="执行" />
</center>
</form></td>
</tr>
</table>
<?php
if (isset($_POST['action']) && $_POST['action'] == 'submitted') { //表单是否已经提交
$link = mysql_pconnect($_POST['host'], $_POST['username'], $_POST['password'])
or die("Could not connect: " . mysql_error()); //连接MYSQL
mysql_select_db($_POST['database'])
or die("Could not select database: " . mysql_error()); //选择数据库
$query = $_POST['sql'];
$result = mysql_query($query)
or die("Query failed: " . mysql_error()); //执行用户提交的SQL语句
?>
<table width="80%" border="1">
<?php
//表头输出字段名
printf('<tr>');
$numfields = mysql_num_fields($result);
for ($i=0; $i < $numfields; $i++) // Header
{ echo '<th>'.mysql_field_name($result, $i).'</th>'; }
echo "</tr>/n";
//输出结果
while ($row = mysql_fetch_row($result)) {
printf('<tr>');
$cnt = count($row);
for ($i=0; $i<$cnt; $i++){
if ($row[$i] != NULL){//NULL值处理
echo('<td>'.$row[$i].'</td>');
}else{
echo('<td> </td>');
}
}
printf('</tr>');
}
mysql_free_result($result);//释放结果
mysql_close($link); //关闭连接
}
?>
</table>
</center>
</body>
</html>