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 "<p>主机 {$arr[0]}</p>";
  echo "<p>用户名 {$arr[1]}</p>";
  echo "<p>密码 {$arr[2]}</p>";
 }
}
循环输出查询行的内容。
``````````````````````````````````````````````````````````````

mysql_fetch_array?-- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有 查一个数组  每次拿一个
MYSQL_ASSOC:  关联数组
MYSQL_NUM:  索引数组
MYSQL_BOTH:  两者共用 (默认值 )
array mysql_fetch_array (查询结果指针[,数组储存型态常数])
语法格式:
if($result){ //判断如果是sql查询结果
 while($arr=mysql_fetch_array($result)){ //循环输出数组
   
 echo "<p>编号:{$arr['id']}</p>";
 echo "<p>作者:{$arr['name']}</p>";
 echo "<p>书名:{$arr['title']}</p>";
 echo "<p>价钱:{$arr['price']}</p>";
 echo "<p>出版日期:{$arr['yr']}</p>"; 
 }
}
````````````````````````````````````````````````````````````````````````

范例:

$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 "<p>主机 {$arr[0]}</p>";   

 echo "<p>用户名 {$arr[1]}</p>";  

 echo "<p>密码 {$arr[2]}</p>";

 }

`````````````````````````````````````````````````````````````````````

 取得栏位数与记录数
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 "<br>";
      }
 }
    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 "<br>";
      }
 }
    $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.“<br>”;

   }  

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

  }

原文地址:https://www.cnblogs.com/zouyajun/p/3691895.html