php mysqli 操作数据库
连接数据库
连接数据库管理系统函数:
$link = new mysqli(host,username,password,dbname);
参数释义:
host,mysql的主机名或ip地址
usernane,mysql用户名
pasword,mysql密码
dbname,要操作的数据库名
返回值:
当连接成功时返回连接标识符
当连接失败时返回false
判断是否连接成功
// 检测连接是否成功
if($link->connect_error){
echo "连接失败,错误:" . $link->connect_error;
}
设置字符集:
$link->set_charset("utf8");
查询语句(执行一条sql语句):
$link->query(sql命令);
当然,连接之后需要将连接的数据库关闭。
$link->close();
断开连接
程序执行完毕自动断开,可省略不用
通过mysqli向数据表中插入信息
首先,连接数据库并且确定数据库连接无误。
$ link = @ new mysqli(host,username,password,dbname);
if($link->connect_error){
echo $link->connect_error;
}
接下来设置sql语句:
$q = "INSERT stu (name,sex,age) VALUES('admin','1',16)";
将设置好的sql语句发送:
$res = $link->query($q);
if($res){
echo "新记录添加成功!";
}else{
echo "新记录添加失败!";
}
如果存储数据的时候出现乱码,那么可以使用下面的代码来解决:
mysqli_set_charset($link,'utf8'); // 解决乱码问题
完整的demo如下:
<?php
// 登录mysql,选择数据库
$link = @new mysqli("localhost:3306","root","root","test");
if($link->connect_error){
echo $link->connect_error;
}
mysqli_set_charset($link,'utf8'); // 解决乱码问题
// 设置sql语句
$q = "INSERT stu (name,sex,age) VALUES('admin','1',16)";
// 发送sql
$res = $link->query($q);
if($res){
echo "新记录添加成功!";
}else{
echo "新记录添加失败!";
}
// 关闭
$link->close();
?>
请注意,每个SQL语句必须用分号隔开。
通过mysqli删除数据
除了发送的SQL命令改为删除,其他与插入并没有什么不同。
完整的demo如下:
mysqli_set_charset($link,'utf8'); // 解决乱码问题
完整的demo如下:
<?php
// 登录mysql,选择数据库
$link = @new mysqli("localhost:3306","root","root","test");
if($link->connect_error){
echo $link->connect_error;
}
mysqli_set_charset($link,'utf8'); // 解决乱码问题
// 设置sql语句
$q = $q = "DELETE FROM stu WHERE id=6";
// 发送sql
$res = $link->query($q);
if($res){
echo "删除数据成功!";
}else{
echo "删除数据失败!";
}
// 关闭
$link->close();
?>
通过mysqli 更改数据
完整的demo如下:
<?php
// 登录mysql,选择数据库
$link = @new mysqli("localhost:3306","root","root","test");
if($link->connect_error){
echo $link->connect_error;
}
mysqli_set_charset($link,'utf8'); // 解决乱码问题
// 设置sql语句
$q = "UPDATE stu SET name='admin' WHERE id=6";
// 发送sql
$res = $link->query($q);
if($res){
echo "更改数据成功!";
}else{
echo "更改数据失败!";
}
// 关闭
$link->close();
?>
通过mysqli 查询数据
完整的demo如下:
<?php
// 登录mysql,选择数据库
$link = @new mysqli("localhost:3306","root","root","test");
if($link->connect_error){
echo $link->connect_error;
}
mysqli_set_charset($link,'utf8'); // 解决乱码问题
// 设置sql语句
$q = "SELECT * FROM stu";
// 发送sql
$res = $link->query($q);
if($res){
echo "查询数据成功!";
}else{
echo "查询数据失败!";
}
// 关闭
$link->close();
?>
在上面的demo中,我们使用的sql语句如下:
$q = "SELECT * FROM stu";
上面的语句可以帮助我们查询全部的数据,我们如果只是想要查询一部分的数据也可以更改一下:
$q = "SELECT name,age,sex FROM stu";
where语句的应用
我们在查询数据的时候可以在原本的条件的基础之上加上where条件,让查找更加的精确,例如:
$q = "SELECT * FROM stu" WHERE id > 3;
查询数据的解析
我们使用查询语句时得到的$res是一种资源型数据,需要通过他自身携带的方法来解析,我们以上面查询代码来说明一下,当查询成功之后我们不要提示,来直接解析一下这个数据:
1.数据解析出了关联数组和索引数组的集合
if($res){
while($arr = $res->fetch_array()){
print_r($arr);
echo "<br>";
}
}else{
echo "查询数据失败!";
}
2.数据解析出了索引数组
if($res){
while($arr = $res->fetch_row()){
print_r($arr);
echo "<br>";
}
}else{
echo "查询数据失败!";
}
3.数据解析出了关联数组
if($res){
while($arr = $res->fetch_assoc()){
print_r($arr);
// echo json_encode($arr);
echo $arr["sex"];
echo "<br>";
}
}else{
echo "查询数据失败!";
}
4.数据解析出了对象
if($res){
while($obj = $res->fetch_object()){
print_r($obj);
echo $obj->name;
echo "<br>";
}
echo $arr["age"]
}else{
echo "查询数据失败!";
}
以上四种方式每次执行返回一条记录的数据,可配合循环多次执行,查询所有数据。第三种方式更为常见,使用的比较多。
常用sql语句总结
在上面的代码中,我们尝试了通过mysqli对mysql数据进行的增删改查操作,其中最为核心的是,sql语句的使用。
下面我们总结一下常用的sql语句语法:
插入记录INSERT:
INSERT table_name (column1, column2, column3,...), VALUES (value1, value2, value3,...)
删除记录DELETE:
DELETE FORM table_name WHERE some_column = some_value
更新记录UPDATE:
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value
查找记录SELECT:
SELECT column_name FROM table_name
//如果传入一个*,则表示搜索所有的数据:
SELECT * FROM table_name
//也可以在后面加入指定条件
SELECT * FROM table_name WHERE 条件