MySQLi基于面向过程的编程
mysqli在windows上,对于PHP 5.3或更新版本,mysqli扩展默认开启,对于PHP 5.0 5.1 5.2,mysqli扩展默认并不会开启,因此php.ini中php_mysqli.dll这个DLL 必须开启。
MySQLi基于面向过程的编程和面向对象的编程是相对的,其中使用到的方法都是可以类比的。
连接数据库
header("Content-type:text/html;charset=utf-8");
$link = mysqli_connect( "localhost" , "root" , "" , "test" ) or die ("Connect Error:".mysqli_connect_error());
设置字符编码
mysqli_set_charset($link,"UTF8");
插入记录
$query = "INSERT INTO staff(id,name,job) VALUES("","naruto","保安队长")";
$res = mysqli_query($link,$query);//插入成功返回真,插入失败返回假
if($res){
//插入成功则输出自增主键的id
echo "AUTO_INCREMENT:".mysqli_insert_id($link);
echo "<hr/>";
echo "AFFECTED ROWS:".mysqli_affected_rows($link);
}else{
//插入失败则输出错误编号和错误信息
echo "Error:";
echo mysqli_errno($link).":".mysqli_error($link);
}
查询一条记录
函数名 | 说明 |
---|---|
mysqli_fetch_assoc($result) | 查询到的一条数据以关联数组形式返回 |
mysqli_fetch_row($result) | 查询到的一条数据以索引数组形式返回 |
mysqli_fetch_array($result) | 查询到的一条数据以索引数组和关联数组的混合形式返回 |
mysqli_fetch_object($result) | 查询到的一条数据以对象属性的形式返回 |
mysqli_fetch_array($result) | 查询到的一条数据以索引数组和关联数组的混合形式返回 |
mysqli_fetch_array($result,MYSQLI_BOTH) | 查询到的一条数据以索引数组和关联数组的混合形式返回 |
mysqli_fetch_array($result,MYSQLI_ASSOC) | 查询到的一条数据以关联数组的混合形式返回 |
mysqli_fetch_array($result,MYSQLI_ROW) | 查询到的一条数据以索引数组的混合形式返回 |
$query = "SELECT * FROM staff WHERE id = 2";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_assoc($result);
var_dump($row); //输出查询结果
查询多条记录
一次取出全部数据
函数名 | 说明 |
---|---|
mysqli_fetch_all($result) | 查询到的所有数据以索引数组和关联数组的混合形式返回 |
mysqli_fetch_all($result,MYSQLI_BOTH) | 查询到的所有数据以索引数组和关联数组的混合形式返回 |
mysqli_fetch_all($result,MYSQLI_ASSOC) | 查询到的所有数据以关联数组的混合形式返回 |
mysqli_fetch_all($result,MYSQLI_ROW) | 查询到的所有数据以索引数组的混合形式返回 |
$query = "SELECT * FROM staff";
$result = mysqli_query($link, $query);
$rows = mysqli_fetch_all($result,MYSQLI_ASSOC);
echo "共".count($rows)."条记录:";
var_dump($rows);
每次取出一条数据
$query = "SELECT * FROM staff";
$result = mysqli_query($link, $query);
while($row = mysqli_fetch_assoc($result)){
$rows[] = $row;
};
echo "共".count($rows)."条记录:";
var_dump($rows);
更新记录
更新操作和插入操作类似,区别是执行的sql语句不同。
$query = "UPDATE staff SET name = "kakax" WHERE id = 3";
$res = mysqli_query($link,$query);//插入成功返回真,插入失败返回假
if($res){
//插入成功则输出自增主键的id
echo "AUTO_INCREMENT:".mysqli_insert_id($link);
echo "<hr/>";
echo "AFFECTED ROWS:".mysqli_affected_rows($link);
}else{
//插入失败则输出错误编号和错误信息
echo "Error:";
echo mysqli_errno($link).":".mysqli_error($link);
}
删除记录
删除操作和插入操作以及更新操作类似,区别是执行的sql语句不通。
$query = "DELETE FROM staff WHERE id = 13";
$res = mysqli_query($link,$query);//插入成功返回真,插入失败返回假
if($res){
//插入成功则输出自增主键的id
echo "AUTO_INCREMENT:".mysqli_insert_id($link);
echo "<hr/>";
echo "AFFECTED ROWS:".mysqli_affected_rows($link);
}else{
//插入失败则输出错误编号和错误信息
echo "Error:";
echo mysqli_errno($link).":".mysqli_error($link);
}
关闭连接
mysqli_close($link);
如果不适用mysqli_close()语句关闭数据库的连接,则非持久连接会在脚本执行完毕后自动关闭。
mysqli_close() 不会关闭由 mysqli_pconnect() 建立的持久连接。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: swoole多进程操作
- 下一篇: mysql中的affected_rows