-
操作数据库
<?php // 主机名 $db_host = "localhost"; // 端口号 $db_port = "3306"; // 用户名 $db_user = "root"; // 密码 $db_pass = "123456"; // 数据库名 $db_name = "test"; // 字符集 $db_charset = "utf8"; // 1、连接 Mysql 服务器,如果连接成功返回 Mysqli 连接对象,如果失败,则返回 false if (!$link = @mysqli_connect($db_host.":".$db_port, $db_user, $db_pass)) { echo "<h2>PHP连接Mysql服务器失败!</h2>"; // 输出错误信息 echo "系统错误信息:".mysqli_connect_error(); // 终止程序 exit() 或 die() die(); } echo "<h2>PHP连接Mysql服务器成功!</h2>"; // 2、选择数据库,成功返回 true, 失败返回 false if (!mysqli_select_db($link, $db_name)) { echo "<h2>选择{$db_name}失败</h2>"; // 终止程序 exit() 或 die() die(); } echo "<h2>选择{$db_name}成功</h2>"; // 3、设置字符集,成功返回 true, 失败返回 false,一般都是成功,没必要判断 mysqli_set_charset($link, $db_charset); // 4、执行 sql 语句,增删改查 $sql = "select * from user"; // 说明: mysqli_query() 仅对 select、show、describe 语句返回一个 mysqli result 结果集对象,如果查询执行不正确则返回 false。对于其它类型的SQL语句,mysqli_query() 在执行成功时返回 true, 出错时返回 false。非 false 的返回值意味着查询是合法的并能够被服务器执行。 // 注意: 查询字符串不应以分号结束,和命令行模式下有区别。 $result = mysqli_query($link, $sql); // 输出这种结果集,但是想要获得数据需要用别的方式: object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(3) ["lengths"]=> NULL ["num_rows"]=> int(4) ["type"]=> int(0) } var_dump($result); // 1)、mysqli_fetch_row 从结果集中获取一行数据,并作为枚举数组返回,如果没有更多行则返回 false 。 $arr = mysqli_fetch_row($result); print_r($arr); // Array ( [0] => 1 [1] => name1 [2] => 18 ) // 再次调用它会自己判断获取下一行数据 $arr = mysqli_fetch_row($result); print_r($arr); // Array ( [0] => 2 [1] => name2 [2] => 15 ) // 可以直接 while 取出所有数据 while($arr = mysqli_fetch_row($result)) { print_r($arr); } // 2)、(常用方式) mysqli_fetch_assoc 从结果集中获取一行数据,并作为关联数组返回,如果没有更多行则返回 false 。 $arr = mysqli_fetch_assoc($result); print_r($arr); // Array ( [id] => 1 [name] => name1 [age] => 18 ) // 再次调用它会自己判断获取下一行数据 $arr = mysqli_fetch_assoc($result); print_r($arr); // Array ( [id] => 2 [name] => name2 [age] => 15 ) // 可以直接 while 取出所有数据 while($arr = mysqli_fetch_assoc($result)) { print_r($arr); } // 3)、mysqli_fetch_array 上面 1 跟 2 的结合体,根据传入不同 $result_type 值获取得到枚举数组或关联数组,如果没有更多行则返回 false 。 // $result_type: MYSQLI_BOTH(两者兼有,默认)、MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引) $arr = mysqli_fetch_array($result); print_r($arr); // Array ( [0] => 1 [id] => 1 [1] => name1 [name] => name1 [2] => 18 [age] => 18 ) $arr = mysqli_fetch_array($result, MYSQLI_ASSOC); print_r($arr); // Array ( [id] => 2 [name] => name2 [age] => 15 ) $arr = mysqli_fetch_array($result, MYSQLI_NUM); print_r($arr); // Array ( [0] => 3 [1] => name3 [2] => 20 ) // 4)、mysqli_fetch_all 上面 3 的升级版,从结果集中获取所有行数据作为关联数组、枚举数组、或二者兼有。 // $result_type: MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引,默认) $arrs = mysqli_fetch_all($result); print_r($arrs); // Array ( [0] => Array ( [0] => 1 [1] => name1 [2] => 18 ) [1] => Array ( [0] => 2 [1] => name2 [2] => 15 ) ) $arrs = mysqli_fetch_all($result, MYSQLI_ASSOC); print_r($arrs); // Array ( [0] => Array ( [id] => 1 [name] => name1 [age] => 18 ) [1] => Array ( [id] => 2 [name] => name2 [age] => 15 ) ) // 4)、mysqli_num_rows 获取结果集中行数量,此命令仅对 select 命令语句有效。 $count = mysqli_num_rows($result); print_r($count); // 2 // 5)、mysqli_affected_rows 取得前一次 Mysql 操作所影响的记录行数。 // 说明: 取得最近一次与 $link 关联的 select、insert、update、delete 操作所影响的记录行数。 // 注意: 如果最近一次查询失败,函数返回-1,当使用 update 查询,Mysql 不会将原值和新值一样的值更新,返回值不一定就是查询条件所符合的记录,只有修改过的记录数才会被返回。 $count = mysqli_affected_rows($link); print_r($count); // 2 // 5、手动销毁结果集变量,方便服务器资源循环利用,注意:如果结果集是 Bool 类型是不能进行销毁的,必须为 mysqli result 结果集对象才可以进行销毁,这里可以做下判断 // mysqli_free_result($result); // 6、如果使用完毕之后,需要关闭数据库连接,以免占用资源 mysqli_close($link); ?>
PHP 原生操作 Mysql
最新推荐文章于 2021-12-27 15:47:06 发布