PHP连接数据库

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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容