连接
连接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);