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。

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)){

}

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'];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值