当前位置:文档之家› php与mysql连接

php与mysql连接

PHP与MySQL数据库


web数据库架构|建立一个连接|选择数据库|发送 SQL 语句 |检索查询结果|关闭数据库连接|错误处理函数|MySQLi扩展库
步骤说明:
1. 用户的Web浏览器发出HTTP请求,请求特定Web页面。例如,用户通过HTML表单的形式要求搜索一种商品。
2. Web服务器收到搜索请求,获取该脚本文件,并将它传到PHP引擎,要求它处理。
3.PHP引擎开始解析脚本。脚本中有一条连接数据库的命令,还有执行一个查询(搜索商品)的命令。PHP打开通向MySQL数据库的连接,发送适当的查询。
4. MySQL服务器接受数据库查询并处理。将结果(搜索到的商品)返回到PHP引擎。
5. PHP引擎完成脚本运行,通常这包括将查询结果格式化成HTML格式,然后将输出的HTML返回到web服务器。
6. Web服务器将HTML发送到浏览器。这样用户就能看到搜索的商品数据。
从web查询数据的基本步骤:
在任何用于从Web访问数据库的脚本中,都应该遵循以下这些步骤。
1. 检查并过滤来自用户的数据。
2. 建立一个适当的数据库连接。
3. 查询数据库
4. 获取查询结构
5. 将结果显示给用户。
````````````````````````````````````````````````
与服务器建立一个连接
mysql_connect-打开一个到 MySQL 服务器的连接
语法格式:resource mysql_connect ( 主机 , 用户名 , 密码 )
$mydb=mysql_connect("localhost","root","root"); //连接主机可以加端口 默认端口为:80
将结果返回给一个变量,如果成功则返回一个 MySQL 连接标识,失败则返回 FALSE。
$mydb=@mysql_connect("localhost","root","root") or die('连接失败');
echo "连接成功";
可以加一个判断,如果成功返回给变量,如果不成功 显示连接失败。
````````````````````````````````````````````````````````````````````````````````
选择数据库
mysql_select_db?--?选择 MySQL 数据库
语法格式:bool mysql_select_db ( 数据库名[,连接标识符] )
mysql_select_db("mysql",$mydb)//连接一个库名为mysql的数据库 标识为服务器返回值
如果成功则返回 TRUE,失败则返回 FALSE
这里也可以加一个判断
if(!mysql_select_db("mysql",$mydb)){
die("数据库不存在");
}
判断如果连接数据库不存在 则显示die内容。
```````````````````````````````````````````````````````````````````````
发送 SQL 语句
mysql_query?--?发送一条 MySQL 查询
语法格式:resource mysql_query ( SQL语句[,连接标识符] )
如果成功则返回执行结果,失败则返回 FALSE
$sql="select Host,User,Password from user";
$result=mysql_query($sql,$mydb);
打出一条sql命令返回给一个变量,然后发给数据库

也可以这样写把连接数据库 与发送数据库命令 一起操作
$result=mysql_db_query("mysql",$sql,$mydb);
```````````````````````````````````````````````

````````````
mysql_fetch_row?--?从结果集中取得一行作为枚举数组
语法格式:array mysql_fetch_row ( resource result )
返回根据所取得的行生成的数组,如果没有更多行则返回 FALSE
语法格式:
if($result){
while($arr=mysql_fetch_row($result)){
print_r($arr);
echo "

主机 {$arr[0]}

";
echo "

用户名 {$arr[1]}

";
echo "

密码 {$arr[2]}

";
}
}
循环输出查询行的内容。
``````````````````````````````````````````````````````````````
mysql_fetch_array?-- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有 查一个数组 每次拿一个
MYSQL_ASSOC: 关联数组
MYSQL_NUM: 索引数组
MYSQL_BOTH: 两者共用 (默认值 )
array mysql_fetch_array (查询结果指针[,数组储存型态常数])
语法格式:
if($result){ //判断如果是sql查询结果
while($arr=mysql_fetch_array($result)){ //循环输出数组

echo "

编号:{$arr['id']}

";
echo "

作者:{$arr['name']}

";
echo "

书名:{$arr['title']}

";
echo "

价钱:{$arr['price']}

";
echo "

出版日期:{$arr['yr']}

";
}
}
````````````````````````````````````````````````````````````````````````
范例:$bookid=$_GET["bookid"];
if(isset($bookid)&&!empty($bookid)){

}
$mydb=@mysql_connect("localhost","root","root") or die('连接失败');
echo "连接成功";

if(!mysql_select_db("mysql",$mydb)){
die("数据库不存在");
}

$sql="select Host,User,Password from user";
$result=mysql_query($sql,$mydb);

//echo $result;

//$result=mysql_db_query("mysql",$sql,$mydb);

while($arr=mysql_fetch_row($result)){
print_r($arr);
echo "

主机 {$arr[0]}

";
echo "

用户名 {$arr[1]}

";
echo "

密码 {$arr[2]}

";
}

`````````````````````````````````````````````````````````````````````
取得栏位数与记录数
mysql_num_fields(列的个数)与mysql_num_rows(行的个数)
语法格式:mysql_num_fields(查询结果指针)
取得结果集中字段的数目。
语法格式:mysql_num_rows(查询结果指针)
取得结果集中行的数目。
范例
echo mysql_num_fields($result);//变量为查询结果
echo mysql_num_rows($result);
``````````````````````````````````````````````````````````````````````
mysql_fetch_field?--? 从结果集中取得列信息并作为对象返回
语法:Object(对象) mysql_fetch_field (查询结果指针,列位置)mysql_fetch_field($xxx)
语法格式$obj=mysql_fetch_field($result);
$obj=mysql_fetch_field($result);//放两个 看看结果吧
echo $obj->name;
echo $obj->table;
echo $obj->max_length;
echo $obj->type;

name - 列名
table - 该列所在的表名
max_length - 该列最大长度
type - 该列的类型
unsigned - 1,如果该列是无符号数,返回1
````````````````````````````````````````````````````````````````````````````
mysql_result?--?取得结果数


mysql_result(mysql传回指针,记录数,栏位名称字符串)
返回类型:
返回 MySQL 结果集中一个单元的内容 .
每次从头开始 资源 下标

mysql_data_seek?--?移动内部结果的指针
语法格式: 资源 行 列
bool mysql_data_seek ( resource result_identifier, int row_number )

$r=mysql_data_seek($result,2);
````````````````````````````````````````````````````````````````````````````
关闭数据库连接
mysql_free_result?--?释放结果内存
格式:bool mysql_free_result ( resource result )
mysql_free_result() 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放。
mysql_close?--?关闭 MySQL 连接
格式:bool mysql_close ( [resource link_identifier] )
mysql_close() 关闭指定的连接标识所关联的到 MySQL 服务器的连接。如果没有指定 link_identifier,则关闭上

范例:mysql_free_result($result);
mysql_close($con);
在连接sql的结尾
```````````````````````````````````````````````````````````````````````````
mysql_errno?--? 返回上一个 MySQL 操作中的错误信息的数字编码
int mysql_errno ( [resource link_identifier] )
mysql_error?--? 返回上一个 MySQL 操作产生的文本错误信息
string mysql_error ( [resource link_identifier] )

范例:echo mysql_errno();
echo mysql_error();

```````````````````````````````````````````````````````````````````````````
其他数据库处理函数
mysql_pconnect?--? 打开一个到 MySQL 服务器的持久连接
mysql_create_db?--?新建一个 MySQL 数据库
mysql_drop_db?--?删除一个 MySQL 数据库
mysql_fetch_object?--?从结果集中取得一行作为对象
mysql_affected_rows?--?取得前一次 MySQL 操作所影响的记录行数
`````````````````````````````````````````````````````````````````````````
重点
PHP5与MySQLi
在PHP5中对于数据库的扩展,重新编写了MySQLi扩展库(i代表改进),与之前的MySQL扩展库在以下方面有了增强:
本地绑定/准备执行的语法支持
游标的支持
SQL语句执行的错误代码
可同时执行多个SQL语句
索引分析
同时提供过程与面向对象的调用接口

面向过程的MySQLi
mysqli_connect()
语法结构:$con=@mysqli_connect("localhost","root","root","books");//mysqli有四个属性(服务器 用户名 密码 数据库名)
if(mysqli_connect_errno()){//判断连接失败 返回一个错误数字编码
die("连接失败");
}
````````````````````````````
mysqli_query()
语法结构:$sql="select * from books"; //mysql命令
mysqli_query($con,"set names gb2312"); //更改字符编码
$result=mysqli_query($con,$sql) or die(mysqli_errno()); //发送数据库命令 失败返回错误数字编码
```````````````````````````````````````
mysqli_num_rows()取得栏位数
语法结构:if(mysqli_num_rows($result)>0){ //判断

如果取得的栏位数大于0 就循环输出
while($arr=mysqli_fetch_array($result)){//循环输出树组
//print_r($arr);
}
}
mysqli_fetch_row()从结果集中取得一行作为枚举数组
mysqli_free_result()释放结果内存
mysqli_close()关闭 MySQL 连接
mysqli_error() 显示错误信息
````````````````````````````````````````````
改进前的数据库面向对象连接
范例:$mylink=mysqli_connect(“localhost”,“root”,“”,”school”);//连接数据库
if(mysqli_connect_errno()){//判断连接错误 返回错误信息
die(“Unable to connect”);//连接错误输出什么
}
$sql="select * from student";//sql命令 查询表所有内容
$result=mysqli_query($mylink,$sql)or die(mysqli_error());//将命令发给数据库 错误返回错误信息
if(mysqli_num_rows($result)>0){//判断如果取得栏位数 大于0 就为ture
while($row=mysqli_fetch_array($result)){ //对数据进行逐条输出
echo $row['sno'].“ ";
echo $row['sname'].“ ";
echo $row['php'].“ ";
echo "
";
}
}
mysqli_free_result($result); //释放内存
mysqli_close($mylink); //关闭与数据库的连接

改进后的
范例:$mydbi=new mysqli(“localhost”,“root”,“”,”school”);//连接数据库
$sql="select * from student";//sql命令 查询表所有内容
$result=$mydbi->query($sql)or die($mydbi->error);//判断连接错误 返回错误信息
if($result->num_rows>0){//查询结果 指向取得栏位数的函数 如果大于0 循环输出
while($row=$result->fetch_array()) { //对数据进行逐条输出
echo $row['sno'].“ ";
echo $row['sname'].“ ";
echo $row['php'].“ ";
echo "
";
}
}
$result->close(); //释放内存
$mydbi->close(); //关闭与数据库的连接
```````````````````````````````````````````````````````````````````````````````
使用prepare接口
有两种prepare准备语句,分别为绑定参数和绑定结果

class mysqli_stmt

属性
affected_rows
errno
方法
bind_param(“”,值可多个)绑定
bind_result()绑定结果
execute()执行
fetch()提取参数
close()关闭

绑定参数
绑定参数的准备语句允许创建一个SQL模版并保存在MySQL服务器上,当我们需要使用时,传入对应的参数即可。
$sql=“insert student values(?,?)”
$stmt=$mydbi->prepare($sql);
$sno=9;
$sname=“alex”;
$stmt->bind_param(“is”,$sno,$sname);//绑定参数
//“is”代表对应两个?问号参数的数据类型
$stmt->execute();//执行SQL操作
$stmt->close();

bind_param()参数
参数i:符合可变的int整型
参数d:符合可变的double双精度
参数s:符合可变的字符串
参数b:符合可变的blob的组合类型

绑定结果
绑定结果的准备语句允许将PHP脚本中的变量绑定到所获取

的响应字段商,从而可以在结果集中提取数据。
可设置的操作绑定如下:
建立一个查询
准备一个SQL查询
在准备查询中将PHP变量绑定到一个字段
执行一个查询
要求一个新记录,用来在调入数据时进行变量绑定
``````````````````````````````````````````````````````````````````````````````
语法结构:
$sql=“select sno,sname from student”//sql命令
$stmt=$mydbi->prepare($sql);//绑定sql命令
$stmt->excute();//执行
$stmt->bind_result($sno,$sname);//绑定结果
while($stmt->fetch()){//从结果集中取值
echo “学号:”.$sno.“ 姓名:”.$sname.“
”;
}
$stmt->close();
完整例子:
$mydbi=new mysqli(“localhost”,“root”,“”,”school”);//连接数据库
$sql="select sno from student where sname=?"; //sql命令
$stmt=$mydbi->prepare($sql)or die($mydbi->error);//执行sql命令 失败返回错误信息
$sname=“alex”;
$stmt->bind_param(“s”,$sname);
$stmt->excute();
$stmt->bind_result($id);
$stmt->fetch();
echo “$sname 的学号是 :”.$id;
$stmt->close();
$mydbi->close();

//计算行总数
$sql8="select count(*) as 'a' from posts";
$result8=$db->query($sql8);
while($row = $result8->fetch_array())
{
echo $row['a'];
}


















































相关主题
文本预览
相关文档 最新文档