因为7.0后就不能用
mysql_
开头的命令了,所以改用mysqli_
。
首先使用mysqli_connect
连接数据库,语法格式如下
mysqli_connect(连接的ip或主机名, 用户名, 密码, 使用的数据库, 连接的端口, socket信息);
这些参数都是可空的,一般只用到前五个,即除了socket信息
以外。
因为上一节我把数据库删了,所以数据库参数那栏填空(
''
),等连上了创建一个。
而使用的数据库是在本地(127.0.0.1
),所以端口参数可填空(即省略,默认为3306
)。
所以
// 使用一个变量存储数据库连接
$con = mysqli_connect('127.0.0.1', 'root', 'root');
// 如果连接成功,则返回连接句柄,否则返回一个空变量
if($con) {
echo '连接成功' . PHP_EOL;
} else {
// 这里的设定是,失败也就不执行后面的代码,所以用die
// die的作用是输出括号内的文本,并结束运行
die('连接失败:' . mysqli_error($con));
}
然后再创建数据库,
php中没有直接用于创建数据库的函数,也可能是我孤陋寡闻,只能借助用于执行sql语句的mysqli_query
函数,语法格式很简单,就两个参数,连接句柄和sql语句,其实还有一个参数查询模式,但是目前不会用上。
// 续上
// 创建一个名为test_db的数据库
$sql = 'create database test_db';
$ret = mysqli_query($con, $sql);
if(!$ret) {
die('数据库创建失败:' . mysqli_error($con));
}
echo '数据库创建成功' . PHP_EOL;
读取数据前,需要使用mysqli_select_db
函数选择需要该数据库:
普通情况下也可以在使用mysqli_connect
函数时就选择数据库
mysqli_select_db($con, 'test_db');
因为是个空数据库,做不了什么查询,所以先手动创建一个表
// 创建一个user表,有uid和name两个字段
$sql = 'create table user (
uid int primary key auto_increment,
name varchar(20) null
);';
$ret = mysqli_query($con, $sql);
if(!$ret) {
die('表创建失败:' . mysqli_error($con));
}
echo '表创建成功' . PHP_EOL;
然后插入五条数据,这里重新创建一个php脚本
// 填入第四个参数时,会默认选择操作该数据库
$con = mysqli_connect('127.0.0.1', 'root', 'root', 'test_db');
// 先创建一个取随机文本的函数
function randomKeys($length = 3) {
$key = '';
$pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for($i = 0; $i < $length; $i++)
$key .= $pattern{ mt_rand(0, strlen($pattern) - 1) };
return $key;
}
// 然后插入5次记录
$sql = 'insert into user (name) values (\'' . randomKeys() . '\')';
for($i = 1; $i < 5; ++$i) {
$sql .= ", ('". randomKeys() ."')";
}
$sql .= ';';
$ret = mysqli_query($con, $sql);
if(!$ret) {
die('数据插入失败:' . mysqli_error($con));
}
echo '数据插入成功' . PHP_EOL;
本来想用五次insert,可是Query好像不支持这种操作(具体为啥也没认真探究)
然后查询数据
$sql = 'select * from user';
$ret = mysqli_query($con, $sql);
if(!$ret) {
die('无法读取数据: ' . mysqli_error($con));
}
while($row = mysqli_fetch_array($ret, MYSQLI_ASSOC)) {
echo "uid: {$row['uid']}, ".
"name: {$row['name']}\n";
}
输出如下:
数据插入成功
uid: 1, name: ynG
uid: 2, name: wqu
uid: 3, name: T4p
uid: 4, name: xaW
uid: 5, name: yu0
最后记得关闭连接
mysqli_close($con);
其他(删、改)就不写了,都是用mysqli_query
操作的。
参考资料:
[1] MySQL 创建数据库