PHP与MySQL(15)

Posted xiukang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP与MySQL(15)相关的知识,希望对你有一定的参考价值。

PHP配置

extension = php_mysqli.dll
  • 不需要绝对路径

如果不启用,那么引用mysqli扩展必须使用绝对路径引用

extension_dir = "ext"

建立和断开链接

$mysqli = new mysqli();//实例化mysqli类
$mysqli -> connect("localhost","root","123");//链接数据库
$mysqli -> select_db("text");//选择text数据库
$mysqli -> close();//关闭链接

获取错误信息

  • 获取错误码
$mysqli = new mysqli("localhost","root","123","test");
echo $mysqli -> errno;//没有错误返回0
  • 获取错误信息
$mysqli = new mysqli("localhost","root","123");//实例化mysqli类
$mysqli -> select_db("text");//选择text数据库
if($mysqli -> errno){
echo $mysqli -> error;//Unknown database ‘text‘ 没有text数据库
}
$mysqli -> close();//关闭链接
  • 在单独的文件中存储链接信息
//mysql.connect.php文件
<?php
$mysqli = new mysqli("localhost","root","123","test");
?>
  • 在必要时包含此文件
<?php
include "mysql.connect.php";//调用mysql.connect.php文件
?>

与数据库交互

  • 向数据库发送查询

·获取数据

query()方法

mysqli_store_result 较高的内存和处理需求,查询整个结果集(默认)

mysqli_use_result 较低的内存需求,查询几行结果集

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "select id, name, age from xiu";//创建查询语句
$result = $mysqli -> query($query,MYSQLI_STORE_RESULT);//$query()方法负责将query发送到数据库
while(list($id,$name,$age) = $result -> fetch_row()){//fetch_row()方法将获得的值生成一个数组
    printf("%d*%d*%d",$id,$name,$age);
}
$mysqli -> close();//关闭数据库链接

·插入、删除或更新数据

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "alter table xiu add column birdate date";//创建查询语句
$mysqli -> query($query);//$query()方法负责将query发送到数据库
echo $mysqli -> affected_rows;//提示影响的多少行
$mysqli -> close();//关闭数据库链接

·释放查询内存

有时可能会获取一个特别大的结果集,会占用大量内存,使用free()方法释放占用的内存

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "select id, name, age from xiu";//创建查询语句
$result = $mysqli -> query($query,MYSQLI_STORE_RESULT);//$query()方法负责将query发送到数据库
while(list($id,$name,$age) = $result -> fetch_row()){//fetch_row()方法将获得的值生成一个数组
    printf("%d*%d*%d",$id,$name,$age);
}
$mysqli -> free();//释放内存
  • 解析查询结果

·将结果放在对象中

fetch_object()方法将结果集放入对象中

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "select id, name, age from xiu";//创建查询语句
$result = $mysqli -> query($query);//$query()方法负责将query发送到数据库
while($xiu = $result -> fetch_object()){//fetch_object()方法将结果集放入对象中
    $id = $xiu -> id;
    $name = $xiu -> name;
    $age = $xiu -> age;
    printf("id:%d,name:%s,age:%d",$id,$name,$age);
}
$mysqli -> close();//关闭数据库链接

·使用索引数组和关联数组获取结果

 fetch_array()将结果集放入数组

MYSQLI_ASSOC 将行作为一个关联数组返回,键由字段表示,值由字段内容表示

MYSQLI_NUM 将行作为一个数字索引数组返回,元素的属性有查询中的顺序决定

MYSQLI_BOTH 将行作为关联数组和数组索引数组返回

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "select id, name, age from xiu";//创建查询语句
$result = $mysqli -> query($query);//$query()方法负责将query发送到数据库
while($xiu = $result -> fetch_array(MYSQLI_ASSOC)){//fetch_array()方法将结果集放入数组
    $id = $xiu["id"];
    $name = $xiu["name"];
    $age = $xiu["age"];
    printf("id:%d,name:%s,age:%d",$id,$name,$age);
}
$mysqli -> close();//关闭数据库链接
  • 确定所选择的行和受影响的行

·确定返回的行数

num_rows属性返回查询了多少行数据

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "select id, name, age from xiu";//创建查询语句
$result = $mysqli -> query($query);//$query()方法负责将query发送到数据库
echo $result -> num_rows;//num_rows属性查询返回了多少行数据
$mysqli -> close();//关闭数据库链接

·确定受影响的行数

 affected_rows属性返回受insert、update或delet查询影响的行数

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "insert into xiu values(4,‘user‘,20)";//创建查询语句
$mysqli -> query($query);//$query()方法负责将query发送到数据库
echo $mysqli -> affected_rows;//affected_rows属性返回影响的行数
$mysqli -> close();//关闭数据库链接
  • 处理准备语句

捆绑参数

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "insert into xiu values(?,?,?)";//创建查询即相对应的占位符(?)
$stmt = $mysqli -> stmt_init();//创建语句对象
$stmt -> prepare($query);//为执行准备语句
$stmt -> bind_param("dsd",$id,$name,$age);//绑定参数
$id = 5;$name = "4";$age = 3;
$stmt -> execute();//执行语句
$stmt -> close();//恢复语句资源 
$mysqli -> close();//关闭数据库链接

·捆绑变量

$mysqli = new mysqli("localhost","root","123","test");//链接数据库服务器并选择test数据库
$query = "select id,name,age from xiu";//创建查询即相对应的占位符(?)
$stmt = $mysqli -> stmt_init();//创建语句对象
$stmt -> prepare($query);//为执行准备语句
$stmt -> execute();//执行语句
$stmt -> bind_result($id,$name,$age);//绑定结果参数
while($stmt -> fetch()){//fetch()获取准备语句结果的每一行
    printf("id:%d,name:%s,age:%d",$id,$name,$age);
}
$stmt -> close();//恢复语句资源 
$mysqli -> close();//关闭数据库链接

以上是关于PHP与MySQL(15)的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

超级有用的9个PHP代码片段

sh 翻译:“OS X 10.10 Yosemite本地开发环境,Apache,PHP和MySQL与Homebrew”15。 DNSMasq成功安装后的返回结果

PHP必用代码片段

PHP代码-psysh调试代码片段工具