连接数据库
连接参数
namespace mysql_edu;
return[
'host'=>$host ?? 'localhost',
'dbname'=>$dbname ?? 'phpedu',
'charset'=>$charset ?? 'utf8',
'port'=>$port ?? '3306',
'username'=>$username ?? 'root',
'password'=>$password ?? 'root',
];
设置连接
namespace mysql_edu;
use mysqli;
$config = require __DIR__."\\config\database.php";
//mysql连接的四大参数:host,username,password,dbname
//extract将关联数组拆成名值对变量
extract($config);
//连接数据库
$mysqli = new mysqli($host,$username,$password,$dbname);
//判断是否成功
if ($mysqli->connect_errno){
echo $mysqli->connect_error;
};
//设置客户端默认的字符集编码
$mysqli->set_charset($charset);
新增操作
namespace mysql_edu;
//连接数据库
require 'connect.php';
//操作数据库
$arr = ['iphoneX','太空银',8888,10];
array_walk($arr,function(&$item,$key,$length){
if ($key < $length-2) $item = "'$item'";
},count($arr));
$data = implode(',',$arr);
$sql = "INSERT `goods`(`name`,`color`,`price`,`num`) VALUES($data)";
if ($mysqli->query($sql)){
if ($mysqli->affected_rows > 0){
echo '成功添加了'.$mysqli->affected_rows.'条数据','新增的ID是'.$mysqli->insert_id;
}
}else{
die('添加失败'.$mysqli->errno.':'.$mysqli->error);
}
//关闭连接
$mysqli->close();
更新操作
//连接数据库
namespace mysql_edu;
require 'connect.php';
//操作数据库
$arr = ['name'=>'iphoneXR','color'=>'太空灰'];;
array_walk($arr,function(&$item,$key){
$item = "`$key`= '$item'";
});
$data = implode(',',$arr);
$sql = "UPDATE `goods` SET".$data."WHERE `id`= 5";
if ($mysqli->query($sql)){
if ($mysqli->affected_rows > 0){
echo '成功更新了'.$mysqli->affected_rows.'条记录';
}else{
echo '没有数据更新';
}
}else{
die('更新失败'.$mysqli->errno.':'.$mysqli->error);
}
//关闭连接
$mysqli->close();
查询操作
namespace mysql_edu;
//连接数据库
require 'connect.php';
//操作数据库
$sql = 'SELECT `name`,`color`,`price` FROM `goods` WHERE `num`=10';
//查询使用:$mysqli->query($sql),
//返回值
//1.查询:返回一个结果集对象
//2.写操作:返回受影响的记录数量返回bool值,成功true,失败false 通过affected_rows返回受影响的记录数量
// $stmt = $mysqli->prepare($sql);
// $stmt->execute();
// var_dump($stmt);
//单挑查询
$mysqli_result = $mysqli->query($sql);
// $goods = $mysqli_result->fetch_array(MYSQLI_ASSOC);
//如果只想要关联部分
// $goods = $mysqli_result->fetch_assoc();
// 如果只想要索引部分
// $mysqli_result->fetch_array(MYSQLI_NUM);
// $goods = $mysqli_result->fetch_row();
//指针复位
// $mysqli_result->data_seek(0);
// if ($mysqli_result && $mysqli_result->num_rows > 0){
// while ($goods = $mysqli_result->fetch_assoc()){
// print_r($goods);
// }
// }else{
// echo '查询失败或者没有符合要求的结果';
// }
//多条记录查询
if ($mysqli_result && $mysqli_result->num_rows > 0){
$goods = $mysqli_result->fetch_all(MYSQLI_ASSOC);
foreach($goods as $good){
vprintf('<li>型号:%s---颜色:%s---价格:%s</li>',$good);
}
}
//关闭连接
//释放结果集
$mysqli_result->free_result();
$mysqli->close();
删除操作
namespace mysql_edu;
//连接数据库
require 'connect.php';
//操作数据库
$sql = "DELETE FROM `goods` WHERE `id`=".$_GET['id'];
if ($mysqli->query($sql)){
if ($mysqli->affected_rows > 0){
echo '成功删除了'.$mysqli->affected_rows.'条记录';
}else{
echo '删除失败';
}
}else{
die('删除失败'.$mysqli->errno.':'.$mysqli->error);
}
//关闭连接
$mysqli->close();
总结
比pdo要麻烦一点,mysql的查询返回一个结果集,用写操作返回布尔值,使用affected_rows返回受影响的记录