美文网首页
PHP连接数据库

PHP连接数据库

作者: DarlingHH | 来源:发表于2018-06-06 14:42 被阅读0次

    PHP连接数据库有许多方法:

    1、mysqli(面向过程)

    $conn = mysqli_connect("localhost","账号","密码") or die("数据库连接失败!失败信息:".mysqli_connect_error($conn));

    mysqli_select_db($conn, "数据库名") or die("数据库选择失败!");

     mysqli_set_charset($conn,"utf8") or die("数据库编码集设置失败!");

    $sql="sql语句";

     $res = mysqli_query($conn,$sql);

     $this::$returnGetDeviceCID=new ArrayList();

     while($row = mysqli_fetch_array($res))

     {

    //处理数据

    }

     mysqli_close($conn);

    2、mysqli(面向对象)

     /** * 处理数据库的扩展库 

     * * mysqli的预处理语句

     * mysqli_stmt预处理类(推荐使用的类)

     * 优点:(mysqli和mysqli_result类的相比) 

     * 1.性能:mysqli_stmt高(执行多条类型相同不同数据的sql,不用多次编译sql)

     * 2.安全上:sql注入问题(用?占位符来解决)

     * 使用(详情见代码):

     * ?占位符绑定:(邦定时要注意,后写的信息要与定好的类型匹配否则无法执行)

     * 例子:$stmt->bind_param("isd",$id,$name,$price); 

     * i:整型

     * d:double 

     * s:string 

     * b:二进制数

     * 返回mysqli_stmt预处理类对象:$stmt = $mysqli->prepare($insert) 

     * 一次性将结果全取出来:store_result() 

     * */

     $mysqli = new mysqli("localhost","用户名","密码","数据库名");

     if (mysqli_connect_errno()) { 

     echo "连接失败:" . mysqli_connect_error(); 

     $mysqli = null; exit(); 

     } 

     $mysqli->set_charset('utf8'); 

     $mysqli->autocommit(true);

     $sql = "SELECT pushId,CID,deviceToken FROM device_cid WHERE UID=? AND deviceStatus=1 AND pushStatus=1;";

    //1.返回mysqli_stmt预处理类对象 $stmt = $mysqli->stmt_init();

    //准备一条语句放在服务器上 $stmt->prepare($sql);

    //2.mysqli的方式(简化了操作)

    //$stmt = $mysqli->prepare($sql); 

     $stmt->bind_param("s", $UID);

    //绑定之后开始执行了

     if ($stmt->execute()) { 

     $this::$returnGetDeviceCID = new ArrayList(); 

     $stmt->store_result();

     echo "记录个数:".$stmt->num_rows."行";            

    $stmt->bind_result($pushId,$CID,$deviceToke);            

    while ($stmt->fetch()){  

                  echo "pushId-->".$pushId." CID-->".$CID." deviceToke-->".$deviceToke; 

                   $this::$deviceCID = new DeviceCID('', '', $pushId, $CID, $deviceToke,'', '');

                    $this::$returnGetDeviceCID->Add($this::$deviceCID);           

     }       

     } else {       

         echo "执行失败";      

      }      

      $stmt->free_result();      

      $stmt->close();       

     $mysqli->close();

    3、PDO

    // TODO: Implement getDeviceCID() method.

    $dbms = 'mysql';   //数据库类型        

    $host = 'localhost'; //数据库主机名        

    $dbName = '数据库名';    //使用的数据库      

    $user = '用户名';      //数据库连接用户名      

    $password = '密码';          //对应的密码      

    $dsn = "$dbms:host=$host;

    dbname=$dbName";      

      try {           

    $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_PERSISTENT => true)); //初始化一个PDO对象,且是长连接。          

    $dbh->query("set names utf8"); //设置数据库编码为utf8          

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//设置数据库句柄属性:(错误报告,抛出 exceptions 异常)。            $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);//设置数据库句柄属性:启用或禁用预处理语句的模拟。强制PDO总是模拟预处理语句(如果为 TRUE ),或试着使用本地预处理语句(如果为 FALSE)。         

     $stmt = $dbh->prepare("SELECT pushId,CID,deviceToken FROM device_id WHERE UID=:UID AND deviceStatus=1 AND pushStatus=1;");       $stmt->bindParam(':UID', $UID);         

     if ($stmt->execute()) {           

     $stmt->setFetchMode(PDO::FETCH_ASSOC);//设置所有的获取模式,全部是关联数组,也可以写在fetch里面(PDO::FETCH_ASSOC),不写就是默认的类型关联和索引都返回            

     $this::$returnGetDeviceCID=new ArrayList();       

       while ($row = $stmt->fetch()) {

    //获取所有查出来的值  循环                

        $this::$deviceCID = new DeviceCID('', '', $row["pushId"], $row["CID"], $row["deviceToken"], '', '');     

                   $this::$returnGetDeviceCID->Add($this::$deviceCID);      

              }          

      }     

       } catch (PDOException $e) {         

       die ("Error!: " . $e->getMessage() . "");     

       }       

     return $this::$returnGetDeviceCID;

    相关文章

      网友评论

          本文标题:PHP连接数据库

          本文链接:https://www.haomeiwen.com/subject/vhpbsftx.html