zoukankan      html  css  js  c++  java
  • 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'];

      }

  • 相关阅读:
    chart控件多个ChartArea
    winform chart画折线,波形图,多条数据
    C# Chart 折线图 多条数据展示
    task一个任务结束后执行另一个操作
    C#多线程同步 读写锁ReaderWriterLock的用法
    C# 多线程文件读写整理总结
    vue解决跨域问题
    接前端页面
    使用vue+zrender绘制体温单 三测单(2)
    使用vue+zrender绘制体温单 三测单(1)
  • 原文地址:https://www.cnblogs.com/zouyajun/p/3691895.html
Copyright © 2011-2022 走看看