前言

在实际开发中,关于数据库操作类,很少是自己去写,大多是通过一些框架去实现,突然自己去写,还是需要借阅手册之类,于是我觉得有必要去总结一下,php连接mysql的方法,php连接mysql,可以通过mysql扩展、mysqli扩展,pdo扩展,因为高版本的php将移除mysql_系列方法,故在此只总结另外两种连接方式。首先我们得确保php的这两个扩展是否已经打开,查看php.ini配置文件如下:

提示,如有有的人说,我打开了扩展库(即去掉了,前面的';'),仍然一直提示mysqli_或pdo系列方法找不到,这很可能是因为你没有指定扩展库所在目录。找到extension_dir 参数,指定扩展所在目录即可

extension_dir = "D:/wamp/bin/php/php5.5.12/ext/"

配置文件

首先我们将连接数据库需要的配置文件,单独出来,这样就不需要每次都去写,需要的时候,直接include或者require包含进来就可以了。如果关于include与require不清楚的,可以查考http://blog.csdn.net/hsd2012/article/details/51089785

文件名conf.php

  1. return array(
  2. 'host'=>'127.0.0.1',
  3. 'user'=>'root',
  4. 'password'=>'',//因为测试,我就不设置密码,实际开发中,必须建立新的用户并设置密码
  5. 'dbName'=>'xxpt',
  6. 'charSet'=>'utf8',
  7. 'port'=>'3306'
 

);


通过mysqli扩展连接

mysqli有两种方式去连接mysql,且支持预处理,一种是面向对象,一种是面向过程。

1.面向过程连接mysql

  1. $dbConf=include 'conf.php';
  2. function openDb($dbConf){
  3. $conn=mysqli_connect($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']) or die('打开失败');
  4. //当然如上面不填写数据库也可通过mysqli_select($conn,$dbConf['dbName'])来选择数据库
  5. mysqli_set_charset($conn,$dbConf['charSet']);//设置编码
  6. return $conn;
  7. }
  8. function closeDb($conn){
  9. mysqli_close($conn);
  10. }
  11. //1.打开连接
  12. $conn=openDb($dbConf);
  13. //2query方法执行增、查、删、改
  14. $sql='SELECT t.`id1` from `t1` as t';
  15. /*************数据查询***************************/
  16. $rs=$conn->query($sql);
  17. //从结果集中读取数据
  18. //fetch_assoc:返回键值对形式,键位字段名、fetch_row:返回键值对形式,键值为数值、fetch_array:返回1和2两种形式的组合
  19. $data=array();//保存数据
  20. while($tmp=mysqli_fetch_assoc($rs)){//每次从结果集中取出一行数据
  21. $data[]=$tmp;
  22. }
  23. //对数据进行相应的操作
  24. print_r($data);//输出数据
  25. /*************数据插入***************************/
  26. $sql='INSERT INTO `t1`(`id1`,`id2`) VALUES(3,4);';
  27. $rs=$conn->query($sql);
  28. //3.关闭连接
  29. closeDb($conn);

2.面向对象方式连接mysql

  1. $dbConf=include 'conf.php';
  2. //打开
  3. $conn=new mysqli($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);
  4. if(!$conn){
  5. die('数据库打开失败');
  6. }
  7. //执行增删改查
  8. /*************数据查询***************************/
  9. $sql='SELECT t.`id1` from `t1` as t';
  10. $rs=$conn->query($sql);//获取结果集
  11. //通过fetch_assoc、fetch_array、fetch_row从结果集中获取数据
  12. while ($tmp=$rs->fetch_assoc()) {
  13. print_r($tmp);
  14. }
  15. /*************数据删除***************************/
  16. $sql='DELETE FROM `t1` WHERE `id1`=3';
  17. $rs=$conn->query($sql);//获取结果集
  18. print_r($rs);$conn->close();

3.mysqli预处理

主要讲解mysli对象编程的预处理,至于面向过程变成的预处理使用mysqli_prepare就不在介绍
$dbConf=include 'conf.php';  
  1. //打开
  2. $conn=new mysqli($dbConf['host'],$dbConf['user'],$dbConf['password'],$dbConf['dbName'],$dbConf['port']);
  3. if(!$conn){
  4. die('数据库打开失败');
  5. }
  6. //执行增删改查
  7. /*************数据查询***************************/
  8. $sql='SELECT * from `t1` as t WHERE id2>?';
  9. $stmt=$conn->prepare($sql);
  10. if(!$stmt){
  11. die('sql语句有问题');
  12. }
  13. //绑定参数
  14. $id2=2;
  15. $stmt->bind_param('i',$id2);//不能写成bind_param('i',2)
  16. //执行
  17. $stmt->execute();
  18. //将结果绑定发到指定的参数上
  19. $stmt->bind_result($id1, $id2);
  20. //获取结果
  21. while ($tmp=$stmt->fetch()) {
  22. print_r('id1='.$id1.',id2='.$id2);
  23. echo '</br>';
  24. }
  25. //关闭
  26. $stmt->free_result();//释放结果
  27. $stmt->close();//关闭预编译的指令.
  28. $conn->close();//关闭连接

预处理绑定参数中参数类型说明如下

php使用PDO方式连接mysql

  1. $dbConf=include 'conf.php';
  2. //打开
  3. $pdo=myPDO::getInstance($dbConf);
  4. /*************数据查询***************************/
  5. $sql='SELECT t.`id1` from `t1` as t';
  6. $rs=$pdo->query($sql);
  7. $data=$rs->fetchAll();//取出所有结果
  8. print_r($data);
  9. /*************数据更新***************************/
  10. $sql='UPDATE t1 SET t1.`id1`=11 WHERE t1.`id1`=1';
  11. $rs=$pdo->query($sql);
  12. /**
  13. * 数据库pdo连接
  14. */
  15. class myPDO{
  16. private static $pdo;
  17. private function __construct(){
  18. //code
  19. }
  20. private function __clone(){
  21. //code
  22. }
  23. /**
  24. * 获取实例化的PDO,单例模式
  25. * @return PDO
  26. */
  27. public static function getInstance($dbConf){
  28. if(!(self::$pdo instanceof PDO)){
  29. $dsn ="mysql:host=".$dbConf['host'].";port=".$dbConf['port'].";dbname=".$dbConf['dbName'].";charset=".$dbConf['charSet'];
  30. try {
  31. self::$pdo = new PDO($dsn,$dbConf['user'], $dbConf['password'], array(PDO::ATTR_PERSISTENT => true,PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); //保持长连接
  32. self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  33. } catch (PDOException $e) {
  34. print "Error:".$e->getMessage()."<br/>";
  35. die();
  36. }
  37. }
  38. return self::$pdo;
  39. }
  40. }

pdo支持预处理,推荐使用预处理方式,以防sql注入。

最新文章

  1. cd命令
  2. CSS调试小技巧 —— 调试DOM元素hover,focus,actived的样式
  3. Servlet生命周期中的service方法分析
  4. Iterator遍历器 调用Symbol.Iterator属性,遍历器对象。
  5. 常见的文件上传方法有哪些?Ajax文件上传原理是什么?
  6. 一张图看Google MVP设计架构
  7. 产品设计原则之移动APP【转】
  8. 简单的oracle sql 语句
  9. CVE-2015-5122 简要分析(2016.4)
  10. Java 后台POST模拟文件上传
  11. RabbitMQ 声明队列时候的参数解释
  12. maven 实用的命令
  13. ubuntu解压命令(转)
  14. Java语法基础学习DayNineteen(反射机制)
  15. Struts2 项目 Action 查询结果异常 org.apache.struts2.json.JSONException
  16. 移植marvell poncat3 demo板的总结
  17. Cmd管理员运行
  18. Thread.join方法的解析(转)
  19. golang语言中sync/atomic包的学习与使用
  20. IntelliJ IDEA 13.1.3 SVN无法正常使用问题

热门文章

  1. ActiveMQ教程(消息发送和接受)
  2. UML_02_概述
  3. TableviewCell嵌套TextView自动换行
  4. 初次使用VCS仿真软件
  5. 2018.11.12 RF debug
  6. Python中for、while、break、continue、if的使用
  7. 【PL/SQL编程】条件语句
  8. Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本
  9. 图文详解如何利用Git+Github进行团队协作开发
  10. PHP---文件上传与下载