连接
连接5.5版本的mysql
<?php//(1)数据库配置信息$db_host = "localhost"; //主机名 localhost:3306$db_port = "3306"; //端口号$db_user = "root"; //用户名$db_pass = "root"; //密码$db_name = "test"; //数据库名$charset = "utf8"; //字符集//(2)PHP连接MySQL服务器if(!$link = @mysqli_connect($db_host.":".$db_port,$db_user,$db_pass)){echo "<h2>PHP连接MySQL服务器失败!</h2>";echo "系统错误信息:".mysqli_connect_error();die(); //中止程序向下运行}//(3)选择当前数据库if(!mysqli_select_db($link,$db_name)){echo "<h2>选择数据库{$db_name}失败!</h2>";die();}//(4)设置数据库返回数据字符集mysqli_set_charset($link,$charset);//(5)关闭先前打开的数据库连接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 的返回值意味着查询是合法的并能够被服务器执行。
- 注意:查询字符串不应以分号结束,和命令行模式下有区别。


$sql_student_query = "select * from student";$sql_student_update = "update student set name = 'xxxxx' where id = 27";echo "<hr>";var_dump(mysqli_query($link,$sql_student_query));echo "<hr>";var_dump(mysqli_query($link,$sql_student_update));
释放内存
mysqli_free_result()
ü 描述:释放与结果集相关联的内存
ü 语法:void mysqli_free_result ( mysqli_result $result )
ü 参数:$result为结果集对象。
内存中的变量何时消失:
(1)网页执行完毕,所有与本网页相关的变量自动销毁;
(2)手动销毁指定的变量。
从结果集获取一行数据
mysqli_fetch_row()
Ø 描述:从结果集中取得一行作为枚举数组;
Ø 格式:array mysqli_fetch_row ( mysqli_result $result )
Ø 返回:返回根据所取得的行生成的数组,如果没有更多行则返回 FALSE。
Ø 说明:mysqli_fetch_row() 从指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。
Ø 提示:依次调用mysqli_fetch_row()将返回结果集中的下一行,如果没有更多行则返回FALSE。
$sql_student_query = "select * from student";echo "<hr>";$mysqli_result = mysqli_query($link, $sql_student_query);while ($one = mysqli_fetch_row($mysqli_result)){var_dump($one);print_r("<br>");}echo "<hr>";


mysqli_fetch_assoc()
ü 描述:从结果集中取得一行作为关联数组
ü 语法:array mysqli_fetch_assoc ( mysqli_result $result )
ü 返回值:从结果集取得的行生成的关联数组,如果没有更多行则返回 FALSE;
ü 注意:此函数返回的字段名大小写敏感。
mysqli_fetch_array()
ü 描述:从结果集中取得一行作为关联数组,或数字数组,或二者兼有;
ü 语法:array mysqli_fetch_array ( mysqli_result $result [, int $result_type = MYSQLI_BOTH ] )
ü 参数:$result_type是一个常量,取值:MYSQLI_BOTH(两者兼有,默认)、MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引)
ü 返回:返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。
ü 注意:本函数返回的字段名区分大小写。
从结果集获取全部数据
mysqli_fetch_all()
ü 描述:从结果集中取得所有行作为关联数组、枚举数组、或二者兼有
ü 语法:mixed mysqli_fetch_all ( mysqli_result $result [, int $resulttype = MYSQLI_NUM ] )
$alldata = mysqli_fetch_all($mysqli_result, MYSQLI_ASSOC);var_dump($alldata);
- MYSQLI_ASSOC 关联数组
- MYSQLI_NUM 数字数组
- MYSQLI_BOTH 都返回

获取记录数
mysqli_num_rows()
ü 描述:取得结果集中行的数目
ü 语法:int mysqli_num_rows ( mysqli_result $result )
ü 说明:mysqli_num_rows()返回结果集中行的数目。
ü 注意:此命令仅对 SELECT 语句有效。
mysqli_affected_rows()
ü 描述:取得前一次 MySQL 操作所影响的记录行数;
ü 语法:int mysqli_affected_rows ( mysqli $link )
ü 说明:取得最近一次与 $link 关联的 SELECT、INSERT、UPDATE 或 DELETE 查询所影响的记录行数。
ü 注意:如果最近一次查询失败,函数返回-1。当使用UPDATE查询,MySQL不会将原值和新值一样的值更新,返回值不一定就是查询条件所符合的记录,只有修改过的记录数才会被返回。
封装的工具类
<?php//定义一个数据库工具类class Db{//私有的数据库配置信息private $db_host; //主机名private $db_user; //用户名private $db_pass; //密码private $db_name; //数据库名private $charset; //字符集private $link; //连接对象//公共的构造方法:数据库对象初始化public function __construct($config=array()){$this->db_host = $config['db_host'];$this->db_user = $config['db_user'];$this->db_pass = $config['db_pass'];$this->db_name = $config['db_name'];$this->charset = $config['charset'];//一个方法只做一件事$this->connectDb(); //连接MySQL服务器$this->selectDb(); //选择数据库$this->setCharset(); //设置字符集}//私有的连接MySQL服务器方法private function connectDb(){if(!$this->link = @mysqli_connect($this->db_host, $this->db_user, $this->db_pass)){echo "连接MySQL服务器失败!";die();}}//私有的选择数据库的方法private function selectDb(){if(!mysqli_select_db($this->link, $this->db_name)){echo "选择数据库{$this->db_name}失败!";die();}}//私有的设置字符集private function setCharset(){mysqli_set_charset($this->link, $this->charset);}//公共的析构方法public function __destruct(){mysqli_close($this->link); //断开MySQL连接}}//创建数据库类的对象$arr = array('db_host' => 'localhost:55555','db_user' => 'root','db_pass' => '123456','db_name' => 'test','charset' => 'utf8');$db = new Db($arr);echo "<pre/>";var_dump($db);
单例模式的数据库工具类(推荐)
<?php//定义最终的单例的数据库工具类class Db{//私有的静态的保存对象的属性private static $obj = null;//私有的数据库配置信息private $db_host; //主机名private $db_user; //用户名private $db_pass; //密码private $db_name; //数据库名private $charset; //字符集private $link; //连接对象//私有的构造方法:阻止类外new对象private function __construct($config=array()){$this->db_host = $config['db_host'];$this->db_user = $config['db_user'];$this->db_pass = $config['db_pass'];$this->db_name = $config['db_name'];$this->charset = $config['charset'];$this->connectDb(); //连接MySQL服务器$this->selectDb(); //选择数据库$this->setCharset();//设置字符集}//私有的克隆方法:阻止类外clone对象private function __clone(){}//公共的静态的创建对象的方法public static function getInstance($arr){//判断当前对象是否存在if(!self::$obj instanceof self){//如果对象不存在,创建并保存它self::$obj = new self($arr);}//返回对象return self::$obj;}//私有的连接MySQL服务器方法private function connectDb(){if(!$this->link = @mysqli_connect($this->db_host, $this->db_user, $this->db_pass)){echo "连接MySQL服务器失败!";die();}}//私有的选择数据库的方法private function selectDb(){if(!mysqli_select_db($this->link, $this->db_name)){echo "选择数据库{$this->db_name}失败!";die();}}//私有的设置字符集private function setCharset(){mysqli_set_charset($this->link, $this->charset);}//公共的析构方法public function __destruct(){mysqli_close($this->link); //断开MySQL连接}}//创建数据库类的对象$arr = array('db_host' => 'localhost','db_user' => 'root','db_pass' => '123456','db_name' => 'phpshujuku','charset' => 'utf8');$db1 = Db::getInstance($arr);$db2 = Db::getInstance($arr);var_dump($db1,$db2);

