连接

连接5.5版本的mysql

  1. <?php
  2. //(1)数据库配置信息
  3. $db_host = "localhost"; //主机名 localhost:3306
  4. $db_port = "3306"; //端口号
  5. $db_user = "root"; //用户名
  6. $db_pass = "root"; //密码
  7. $db_name = "test"; //数据库名
  8. $charset = "utf8"; //字符集
  9. //(2)PHP连接MySQL服务器
  10. if(!$link = @mysqli_connect($db_host.":".$db_port,$db_user,$db_pass))
  11. {
  12. echo "<h2>PHP连接MySQL服务器失败!</h2>";
  13. echo "系统错误信息:".mysqli_connect_error();
  14. die(); //中止程序向下运行
  15. }
  16. //(3)选择当前数据库
  17. if(!mysqli_select_db($link,$db_name))
  18. {
  19. echo "<h2>选择数据库{$db_name}失败!</h2>";
  20. die();
  21. }
  22. //(4)设置数据库返回数据字符集
  23. mysqli_set_charset($link,$charset);
  24. //(5)关闭先前打开的数据库连接
  25. mysqli_close($link);

执行各种SQL语句

mysqli_query()

  • 描述:发送一条 MySQL 查询;
  • 语法:resource mysqli_query(mysqli $link , string $query )
  • 参数:
  • $query是查询字符串;
  • $link是创建的活动的数据库连接;
  • 说明:mysqli_query() 仅对 SELECT,SHOW 或 DESCRIBE 语句返回一个mysqli_result结果集对象,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysqli_query()在执行成功时返回 TRUE,出错时返回 FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。
  • 注意:查询字符串不应以分号结束,和命令行模式下有区别。

图片10.png

图片11.png

  1. $sql_student_query = "select * from student";
  2. $sql_student_update = "update student set name = 'xxxxx' where id = 27";
  3. echo "<hr>";
  4. var_dump(mysqli_query($link,$sql_student_query));
  5. echo "<hr>";
  6. var_dump(mysqli_query($link,$sql_student_update));

释放内存

mysqli_free_result()

ü 描述:释放与结果集相关联的内存
ü 语法:void mysqli_free_result ( mysqli_result $result )
ü 参数:$result为结果集对象。

内存中的变量何时消失:
(1)网页执行完毕,所有与本网页相关的变量自动销毁;
(2)手动销毁指定的变量。
图片12.png

从结果集获取一行数据

mysqli_fetch_row()

Ø 描述:从结果集中取得一行作为枚举数组;
Ø 格式:array mysqli_fetch_row ( mysqli_result $result )
Ø 返回:返回根据所取得的行生成的数组,如果没有更多行则返回 FALSE。
Ø 说明:mysqli_fetch_row() 从指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。
Ø 提示:依次调用mysqli_fetch_row()将返回结果集中的下一行,如果没有更多行则返回FALSE。

  1. $sql_student_query = "select * from student";
  2. echo "<hr>";
  3. $mysqli_result = mysqli_query($link, $sql_student_query);
  4. while ($one = mysqli_fetch_row($mysqli_result)){
  5. var_dump($one);
  6. print_r("<br>");
  7. }
  8. echo "<hr>";

图片13.png
图片14.png

mysqli_fetch_assoc()

ü 描述:从结果集中取得一行作为关联数组
ü 语法:array mysqli_fetch_assoc ( mysqli_result $result )
ü 返回值:从结果集取得的行生成的关联数组,如果没有更多行则返回 FALSE;
ü 注意:此函数返回的字段名大小写敏感。
图片15.png

mysqli_fetch_array()

ü 描述:从结果集中取得一行作为关联数组,或数字数组,或二者兼有
ü 语法:array mysqli_fetch_array ( mysqli_result $result [, int $result_type = MYSQLI_BOTH ] )
ü 参数:$result_type是一个常量,取值:MYSQLI_BOTH(两者兼有,默认)、MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引)
ü 返回:返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。
ü 注意:本函数返回的字段名区分大小写。
图片15.png

图片16.png
图片18.png

从结果集获取全部数据

mysqli_fetch_all()

ü 描述:从结果集中取得所有行作为关联数组、枚举数组、或二者兼有
ü 语法:mixed mysqli_fetch_all ( mysqli_result $result [, int $resulttype = MYSQLI_NUM ] )

  1. $alldata = mysqli_fetch_all($mysqli_result, MYSQLI_ASSOC);
  2. var_dump($alldata);
  • MYSQLI_ASSOC 关联数组
  • MYSQLI_NUM 数字数组
  • MYSQLI_BOTH 都返回

    图片19.png

    获取记录数

    mysqli_num_rows()

    ü 描述:取得结果集中行的数目
    ü 语法:int mysqli_num_rows ( mysqli_result $result )
    ü 说明:mysqli_num_rows()返回结果集中行的数目。
    ü 注意:此命令仅对 SELECT 语句有效
    image.png

    mysqli_affected_rows()

    ü 描述:取得前一次 MySQL 操作所影响的记录行数;
    ü 语法:int mysqli_affected_rows ( mysqli $link )
    ü 说明:取得最近一次与 $link 关联的 SELECT、INSERT、UPDATE 或 DELETE 查询所影响的记录行数。
    ü 注意:如果最近一次查询失败,函数返回-1。当使用UPDATE查询,MySQL不会将原值和新值一样的值更新,返回值不一定就是查询条件所符合的记录,只有修改过的记录数才会被返回。
    image.png

封装的工具类

  1. <?php
  2. //定义一个数据库工具类
  3. class Db
  4. {
  5. //私有的数据库配置信息
  6. private $db_host; //主机名
  7. private $db_user; //用户名
  8. private $db_pass; //密码
  9. private $db_name; //数据库名
  10. private $charset; //字符集
  11. private $link; //连接对象
  12. //公共的构造方法:数据库对象初始化
  13. public function __construct($config=array())
  14. {
  15. $this->db_host = $config['db_host'];
  16. $this->db_user = $config['db_user'];
  17. $this->db_pass = $config['db_pass'];
  18. $this->db_name = $config['db_name'];
  19. $this->charset = $config['charset'];
  20. //一个方法只做一件事
  21. $this->connectDb(); //连接MySQL服务器
  22. $this->selectDb(); //选择数据库
  23. $this->setCharset(); //设置字符集
  24. }
  25. //私有的连接MySQL服务器方法
  26. private function connectDb()
  27. {
  28. if(!$this->link = @mysqli_connect($this->db_host, $this->db_user, $this->db_pass))
  29. {
  30. echo "连接MySQL服务器失败!";
  31. die();
  32. }
  33. }
  34. //私有的选择数据库的方法
  35. private function selectDb()
  36. {
  37. if(!mysqli_select_db($this->link, $this->db_name))
  38. {
  39. echo "选择数据库{$this->db_name}失败!";
  40. die();
  41. }
  42. }
  43. //私有的设置字符集
  44. private function setCharset()
  45. {
  46. mysqli_set_charset($this->link, $this->charset);
  47. }
  48. //公共的析构方法
  49. public function __destruct()
  50. {
  51. mysqli_close($this->link); //断开MySQL连接
  52. }
  53. }
  54. //创建数据库类的对象
  55. $arr = array(
  56. 'db_host' => 'localhost:55555',
  57. 'db_user' => 'root',
  58. 'db_pass' => '123456',
  59. 'db_name' => 'test',
  60. 'charset' => 'utf8'
  61. );
  62. $db = new Db($arr);
  63. echo "<pre/>";
  64. var_dump($db);

单例模式的数据库工具类(推荐)

  1. <?php
  2. //定义最终的单例的数据库工具类
  3. class Db
  4. {
  5. //私有的静态的保存对象的属性
  6. private static $obj = null;
  7. //私有的数据库配置信息
  8. private $db_host; //主机名
  9. private $db_user; //用户名
  10. private $db_pass; //密码
  11. private $db_name; //数据库名
  12. private $charset; //字符集
  13. private $link; //连接对象
  14. //私有的构造方法:阻止类外new对象
  15. private function __construct($config=array())
  16. {
  17. $this->db_host = $config['db_host'];
  18. $this->db_user = $config['db_user'];
  19. $this->db_pass = $config['db_pass'];
  20. $this->db_name = $config['db_name'];
  21. $this->charset = $config['charset'];
  22. $this->connectDb(); //连接MySQL服务器
  23. $this->selectDb(); //选择数据库
  24. $this->setCharset();//设置字符集
  25. }
  26. //私有的克隆方法:阻止类外clone对象
  27. private function __clone(){}
  28. //公共的静态的创建对象的方法
  29. public static function getInstance($arr)
  30. {
  31. //判断当前对象是否存在
  32. if(!self::$obj instanceof self)
  33. {
  34. //如果对象不存在,创建并保存它
  35. self::$obj = new self($arr);
  36. }
  37. //返回对象
  38. return self::$obj;
  39. }
  40. //私有的连接MySQL服务器方法
  41. private function connectDb()
  42. {
  43. if(!$this->link = @mysqli_connect($this->db_host, $this->db_user, $this->db_pass))
  44. {
  45. echo "连接MySQL服务器失败!";
  46. die();
  47. }
  48. }
  49. //私有的选择数据库的方法
  50. private function selectDb()
  51. {
  52. if(!mysqli_select_db($this->link, $this->db_name))
  53. {
  54. echo "选择数据库{$this->db_name}失败!";
  55. die();
  56. }
  57. }
  58. //私有的设置字符集
  59. private function setCharset()
  60. {
  61. mysqli_set_charset($this->link, $this->charset);
  62. }
  63. //公共的析构方法
  64. public function __destruct()
  65. {
  66. mysqli_close($this->link); //断开MySQL连接
  67. }
  68. }
  69. //创建数据库类的对象
  70. $arr = array(
  71. 'db_host' => 'localhost',
  72. 'db_user' => 'root',
  73. 'db_pass' => '123456',
  74. 'db_name' => 'phpshujuku',
  75. 'charset' => 'utf8'
  76. );
  77. $db1 = Db::getInstance($arr);
  78. $db2 = Db::getInstance($arr);
  79. var_dump($db1,$db2);