php复习 第十四天 mysqli相关函数

<?php 
header("Content-Type:text/html;charset=utf-8");

# 创建数据库时指定默认校对规则即可指定默认字符编码为utf8
# mysql> create database review default character set utf8 collate utf8_general_ci;
# Query OK, 1 row affected (0.00 sec)

# 注意:如果不是通过my.ini配置文件设置的内容,只在当前状态下有效,当重启数据库服务后失效。所以如果想要不出现乱码只有修改my.ini文件,数据库编码可以在创建数据库时候指定UTF8。


/*
    函数概要:
    mysqli_query() 在数据库上执行一个查询。失败时返回 FALSE,通过mysqli_query() 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回TRUE。 

    mysqli_fetch_row() 以一个索引数组方式返回一行结果
    mysqli_fetch_assoc() 以一个关联数组方式抓取一行结果
    mysqli_fetch_array() 以一个关联数组,数值索引数组,或者两者皆有的方式抓取一行结果
    mysqli_fetch_all() 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。
    mysqli_num_rows() 获取结果中行的数量
    mysqli_fetch_field()  返回结果集中的下一个字段 
    mysqli_fetch_fields() 返回一个代表结果集字段的对象数组
    mysqli_free_result()  释放与一个结果集相关的内存 


 */



#1 连接数据库

$link = @mysqli_connect('localhost','root','root');

#2 判断连接是否有误
if(mysqli_connect_errno()){
    die(mysqli_connect_error());
}

#3 设置默认字符集
mysqli_set_charset($link,'utf8');

#4 选择数据库
mysqli_select_db($link,'review');

#5 执行sql语句

#5.1)如果数据表user不存在,则创建。
$query = 'CREATE TABLE IF NOT EXISTS `user`(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    age TINYINT UNSIGNED NOT NULL ,
    sex ENUM("男","女") NOT NULL,
    name VARCHAR(8) NOT NULL
)';
mysqli_query($link,$query);

/*此时的表结构如下
    mysql> desc user;
    +-------+---------------------+------+-----+---------+----------------+
    | Field | Type                | Null | Key | Default | Extra          |
    +-------+---------------------+------+-----+---------+----------------+
    | id    | int(11)             | NO   | PRI | NULL    | auto_increment |
    | age   | tinyint(3) unsigned | NO   |     | NULL    |                |
    | sex   | enum('男','女')     | NO   |     | NULL    |                |
    | name  | varchar(4)          | NO   |     | NULL    |                |
    +-------+---------------------+------+-----+---------+----------------+
    4 rows in set (0.01 sec)
*/

#5.2)插入数据
#如果查询并没有记录存在,则插入3条记录。

$query = 'SELECT * FROM `user` limit 1';
$result = mysqli_query($link,$query);
if(mysqli_num_rows($result) < 1){
    $query = "INSERT INTO user(age,sex,name) 
        VALUES(16,'女','张全蛋'),(17,'男','王尼玛'),(19,'男','奥夫斯特洛夫斯基')
    ";
    mysqli_query($link,$query);
}

/*此时表记录如下(因为做了很多删除测试,所以id就出现了如下问题):
    mysql> select * from user;
    +----+-----+-----+------------------+
    | id | age | sex | name             |
    +----+-----+-----+------------------+
    | 11 |  16 | 女  | 张全蛋           |
    | 12 |  17 | 男  | 王尼玛           |
    | 13 |  19 | 男  | 奥夫斯特洛夫斯基 |
    +----+-----+-----+------------------+
    3 rows in set (0.00 sec)
*/

$query = 'select id num,age,sex,name from user';
$result = mysqli_query($link,$query);
var_dump(mysqli_fetch_row($result)); 
echo '<br />以上是索引数据返回一条记录,指针移动<br />';

var_dump(mysqli_fetch_assoc($result));
echo '<br />以上是关联数据返回一条记录,指针移动<br />';

var_dump(mysqli_fetch_array($result,MYSQLI_ASSOC));//MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH. 
echo '<br />以上是关联数据返回一条记录,指针移动<br />';

var_dump(mysqli_fetch_all($result,MYSQLI_ASSOC));
echo '<br />以上是关联数据返回剩余记录,指针移动<br />';

var_dump(mysqli_num_rows($result));//该函数返回记录行数
echo '<br />返回记录行数<br />';

//返回结果集中的下一个字段,与任何指针无关。从0开始
$field = mysqli_fetch_field($result);
var_dump($field);
echo $field->orgname.'<br />';//字段名
echo $field->name.'<br />';//字段别名
echo '<hr></hr>';

//返回结果集中的下一个字段,与任何指针无关。从0开始
$fields = mysqli_fetch_fields($result);
var_dump($fields);
echo $fields[0]->orgname;
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值