第五章.数据库交互
一、PHP4.1支持的数据库
1.MySQL
2.mSQL
3.MS SQL
4.filePro(Read only)
5.Informix
6.interBase
7.Oracle
8.Ovrimos
9.Sybase
10.DB++
11.DBM
12.PostgreSQL
13.Frontbase
二、PHP的特定数据库函数
1.连接数据库服务器
1).*_connect
mysql_connect(server,user,password);
mssql_connect(server,user,password);
//找到php.ini中 ;extension=php_mssql.dll把前面;去掉保存,重启apache服务器
pg_connect(string);
如:
pg_connect(“host=localhost prot=5432 dbname=test user=name password=123”);
$handle = mssql_connect("7BB2389B11EA496","sa");
2).*_pconnect
mysql_pconnect(server,user,password);
mssql_pconnect(server,user,password);
pg_pConnect(string);
说明:
本函数和*_connect()雷同。不同的地方在于使用本函数打开数据库时,程序会先寻找是否曾经执行过本函数,若执行过则返回先前执行的 ID。另一个不同的地方是本函数无法使用 *_close() 关闭数据库。
注:
(1). server:为服务器主机名或IP地址
user:为登录用户名
password:为登录密码
(2). host:为主机名
port:为端口
dbname:为数据库名
user:为用户名
password:为密码
2.选择正确的数据库(MS SQL和MySQL)
mysql_select_db(datebasestring,sqlcon);
或 mssql_select_db(datebasestring, sqlcon);
注:datebasestring:为数据库名称
sqlcon:为数据库连接名
如:
$handle = msql_connect("localhost","root","");
msql_select_db("userinfo", $handle); ‘userinfo:数据库名字
msql_select_db("userinfo", $handle); ‘userinfo:数据库名字
3.数据库查询、插入、读取和删除数据
mysql_query(sqlstring,sqlcon);
mssql_query(sqlstring sqlcon);
注:sqlstring:为要执行的SQL语句
sqlcon:为数据库连接名
4.查询结果的返回值
1). fetch_array
mysql_fetch_array(result);
mssql_fetch_array(result);
pg_fetch_array(result);
注:
结果中的数据被装入数组(关联和索引)的域中。数据的不同列将被装入不同的数组的域中数组的键值对应于返回数据的列名
2). fetch_row
mysql_fetch_row(result);
mssql_fetch_row(result);
pg_fetch_row(result):
注:
本函数用来将查询结果 result 之单列拆到数组变量中。数组的索引是数字索引,第一个的索引值是 0。若 result 没有资料,则返回 false 值。
如:
<?php
$conn = mysql_pconnect("localhost","root","");
if (!$conn) {
echo "连接失败/n";
exit;
}
mysql_select_db("cbw", $conn);
$result = mysql_query("SELECT * FROM admin",$conn);
if (!$result) {
echo "查询失败/n";
exit;
}
$fayy = mysql_fetch_row($result);
if($fayy){
echo $fayy[0];
echo $fayy[1];
echo $fayy[2]."<br>";
}else{
echo "出错";
}
?>
3). fetch_object
mssql_fetch_object(result);
注:
本函数用来将查询结果 result 拆到类变量中。使用方法和 mssql_fetch_array() 几乎相同,不同的地方在于本函数返回资料是类而不是数组。若 result 没有资料,则返回 false 值。
如:
<?php
$conn = mysql_pconnect("localhost","root","");
if (!$conn) {
echo "连接失败/n";
exit;
}
mysql_select_db("cbw", $conn);
$result = mysql_query("SELECT * FROM admin",$conn);
if (!$result) {
echo "查询失败/n";
exit;
}
$fayy = mysql_fetch_object($result);
if($fayy){
echo $fayy->sid."<br>";
echo $fayy->sname."<br>";
echo $fayy->ssex."<br>"
}
?>
4).fetch_field
注:
获取查询结果中的列信息并以对象的形式返回
例:
<?php
$handle = mysql_connect("localhost","root");
mysql_select_db("cbw", $handle);
$dbresult=mysql_query("select * from admin", $handle);
while($dbarray=mysql_fetch_field($dbresult)) {
echo "字段名称:".$dbarray->name."/n<br>";
echo " 所属表名:".$dbarray->table."/n<br>";
echo " 列的最大长度:".$dbarray->max_length."/n<br>";
echo " 列不可为空:".$dbarray->not_null."/n<br>";
echo " 列为主键:".$dbarray->primary_key."/n<br>";
echo " 列不是unique_key:".$dbarray->multiple_key."/n<br>";
echo " 列为数字:".$dbarray->numeric."/n<br>";
echo " 列为BLOB:".$dbarray->blob."/n<br>";
echo " 列的类型:".$dbarray->type."/n<br>";
echo " 列为无符号类型:".$dbarray->unsigned."/n<br>";
echo " 列为BLOB:".$dbarray->blob."/n<br>";
echo " 列为零填充:".$dbarray->zerofill."/n<br><br>";
}
mysql_close($handle);
?>
综合实例:查询结果的返回值
<?php
$handle = mysql_connect("localhost","root",""); //创建数据库连接
if (!$handle) { //如果连接不成功
echo "连接失败/n";
exit;
}
mysql_select_db("cbw", $handle); //选择数据库
$dbresult=mysql_query("select * from admin", $handle); //执行SQL语句
if (!$dbresult) { //如果查询失败
echo "查询失败/n";
exit;
}
while($dbarray=mysql_fetch_array($dbresult)) { //返回数据给数组
echo "<li>".$dbarray["1"]."__"; //索引数组元素(数字数组)
echo $dbarray["sname"]."/n"; //索引数组元素(关联数组)
}
mysql_close($handle); //关闭数据库连接
?>
5.关闭数据库连接
mysql_close();
mssql_close();
pg_close();
三、DBX函数
1.建立数据库连接
dbx_connect(MODULE,HOST,DATABASE,USER,PASSWORD,PERSISTENT);
参数如下:
1).MODULE:
DBX_MYSQL MySQL数据库
DBX_ODBC 任何支持ODBC连接的数据库
DBX_PGSQL PostgreSQL数据库
DBX_MSSQL MS SQL数据库
DBX_FBSQL Frontbase数据库
2).HOST 数据库主机名或IP地址
3).DATABASE 数据库服务器上的数据库名
4).USER 用户名
5).PASSWORD 密码
6).PERSISTENT 是否永久连接,如果希望,让该值为DBX_PERSISTENT,否则不需要该参数
2.返回错误
dbx_error(connectionstr);
参数:connectionstr为dbx_connect()定义的连接标识符
3.执行SQL语句
dbx_query(constr,sqlstr,flags);
第一.参数:
1).constr 为调用dbx_connect()定义的连接标识符
2).sqlstr 标准SQL语句
3).flags 用于指定一个或多个标识以指出查询需要返回多少信息。默认所有标识都是打开的。要指定标识,必须用“|”符号来分隔标识符
标识符有:
[1].DBX_RESULT_INDEX 总会返回结果数组里的所有元素都由数字索引
[2].DBX_RESULT_INFO 返回字段的信息,如字符名字符和字段类型
[3].DBX_RESULT_ASSOC 设定返回数组的键值为字段名
第二.返回属性
1).handle 用 $result->handle 访问
2).cols 结果集中的列数 $result->cols 访问
3).rows 结果集中的行数 $result->rows 访问
4).info 只有flags参数指定为DBX_RESULT_INFO或DBX_RESULT_ASSOC时才会返回。提供一个二维数级存放字段名和类型,用$rsult[‘info’][$x]和$result[‘name’][$x]访问,$x是某一行的索引
5).data 包含结果中的真实数据,用 $result->data[$x][“字段名”] (也可以是索引号)来访问, $x是某一行的索引
例:
<?php
$conn = dbx_connect(DBX_MYSQL,"localhost","cbw","root","");
if (!$conn) {
echo "连接失败/n";
exit;
}
$result=@dbx_query($conn,"select * from admin");
if($result){
echo $result->data[1][2]."<br>";
echo $result->handle."<br>";
echo "列数:".$result->cols."<br>";
echo "行数:".$result->rows."<br>";
}else{
echo "出错了";
}
?>
4.数据排序
dbx_sort(result,fun)
参数:
result: dbx_query函数返回的结果
fun:自定义排序函数
例:
function my_sort(){
//语句
}
dbx_sort($result,”my_sort”);
5.比较函数
dbx_compare(ROW1,ROW2,COLUMN KEY,FLAGS)
参数:
1).ROW1 dbx_query函数返回的结果
2).ROW2 dbx_query函数返回的结果
3).COLUMN KEY 进行比较的列名
4).FLAGS 指定几个标识按升序或降序比较类型来进行比较,用“|”符号来分隔
[1].DBX_CMP_ASC 按升序比较(默认)
[2].DBX_CMP_DESC 按降序比较
[3].DBX_CMP_NATIVE “按照目前情况”比较项目
[4].DBX_CMP_TEXT 按符串比较项目(默认)
[5].DBX_CMP_NUMBER 按数字比较项目