Code前端首页关于Code前端联系我们

使用 mysqli_query() 执行 MySQL 查询

terry 2年前 (2023-09-29) 阅读数 49 #PHP
文章标签 PHP

1。 mysqli_query()概述

在 PHP 中,数据库操作是开发中最常用的部分之一。 mysqli_query() 函数是 PHP 中的一个重要函数,用于查询 MySQL 数据库。 mysqli_query()函数使用MySQLi扩展库中的函数来执行查询操作。

mysqli_query()语法如下:

mysqli_query(connection,query,resultmode);

其中,

  • mysqli_query():函数名
  • 链接:必填。指定要使用的 MySQL 连接。
  • 请求:必填。指定查询字符串。
  • 结果:可选。常量,默认为 MYSQLI_STORE_RESULT。如果指定MYSQLI_USE_RESULT,则返回的结果集将不会被缓存,这对于处理大量数据很有用。

2。 mysqli_query()的用法和示例

使用mysqli_query()函数执行一条SELECT语句并返回一个结果集,然后一次性检索结果集中的数据。示例代码如下:

$conn = mysqli_connect('localhost', 'root', '','test'); 
if (!$conn){    
    die("连接数据库失败:" . mysqli_connect_error()); 
} 

$sql = "SELECT * FROM user"; 
$result = mysqli_query($conn,$sql); 

if(mysqli_num_rows($result)>0){
    while($row = mysqli_fetch_assoc($result)){ 
        echo "name: " . $row['name']. " - pwd:" . $row['pwd']. "
"; } }else{ echo '没有数据'; } mysqli_close($conn);

此示例代码使用 mysqli_query() 函数执行 SELECT 语句,检索结果集中的所有数据并输出。其中,mysqli_fetch_assoc()函数用于从结果集中取出数据行,并将其封装成关联数组(key=>value),以方便开发人员。

3。有关 mysqli_query() 函数的常见问题

1。 mysqli_query()函数返回值的问题

执行 SELECT 语句时,mysqli_query() 函数返回结果集。当执行非 SELECT 语句时,mysqli_query() 函数将返回一个布尔值。关于mysqli_query()函数的返回值,有一些问题需要注意:

  • 当查询遇到错误时,Mysqli_query() 返回不正确的值,

    $sql = "SELECT * FROM user"; 
    $result = mysqli_query($conn,$sql); 
    if(!$result){ 
        die('Invalid query: ' . mysqli_error($conn)); 
    }
  • 当使用 INSERT、UPDATE 或 DELETE 语句时,mysqli_query() 返回受影响的行数:

    $sql = "UPDATE user SET pwd=456 WHERE pwd=123"; 
    $result = mysqli_query($conn,$sql); 
    if($result){ 
        echo "数据更新成功"; 
    }else{ 
        echo "数据更新失败"; 
    }
  • 当mysql_query()函数执行无效语句时,它返回不正确的值。如果有语法错误,会报错1064,检查拼写和语法错误:

    $sql = "select * from user wherr username='aaa'"; 
    $result = mysqli_query($conn,$sql); 
    if(!$result){ 
        die('Invalid query: ' . mysqli_error($conn)); 
    }

2。函数 mysqli_query() 的性能问题

要执行非SELECT语句,可以添加mysqli_use_result()或mysqli_store_result()参数,以避免执行语句时将所有结果存储在客户端内存中。

mysqli_store_result() 存储一组用于客户端处理的结果。该函数适合返回大量数据的查询。

mysqli_use_result()会立即返回查询结果,避免查询过程中将所有数据加载到PHP内存中。让我们比较一下这两个 PHP 函数在检索大量数据的 SELECT 查询结果时的时间效率。

require_once "config.php"; 
require_once "common.php"; 

$conn = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE); 
if (!$conn){    
    die("连接数据库失败:" . mysqli_connect_error()); 
} 

$sql = "SELECT * FROM user_letter"; 
$start_time = get_millisecond();//获取当前毫秒时间戳

$result = mysqli_query($conn,$sql,MYSQLI_STORE_RESULT); 

if(mysqli_num_rows($result)>0){ 
    //遍历每个记录并输出 
    while($row = mysqli_fetch_assoc($result)){ 
        //echo "id: ".$row["id"]." - content:".$row["content"]." - create_time:".$row["create_time"]."
"; } }else{ echo '没有数据'; } $end_time = get_millisecond();//获取当前毫秒时间戳 echo "Get result from DB using mysqli_store_result() costs ".($end_time-$start_time)."ms."; mysqli_free_result($result); $start_time = get_millisecond(); $result = mysqli_query($conn,$sql,MYSQLI_USE_RESULT); if(mysqli_num_rows($result)>0){ while($row = mysqli_fetch_assoc($result)){ //echo "id: ".$row["id"]." - content:".$row["content"]." - create_time:".$row["create_time"]."
"; } }else{ echo '没有数据'; } $end_time = get_millisecond(); echo "
Get result from DB using mysqli_use_result() costs ".($end_time-$start_time)."ms."; mysqli_free_result($result); mysqli_close($conn);

在此示例代码中,我们首先连接到数据库,然后在连接的数据库上执行 SELECT 语句,并使用 mysqli_query() 函数从结果集中检索所有记录。在迭代每条记录时,我们可以看到注释的输出操作。

时间测试结果表明,使用mysqli_use_result()明显优于使用mysqli_store_result()。一旦结果集关闭,系统会立即将其从服务器内存中删除。

4。结束

以上是使用mysqli_query()执行MySQL查询的相关内容。我们可以看到mysqli_query()是PHP中常用的函数之一。我们可以针对不同的查询进行优化。在开发过程中,我们还需要注意:查询字符串时必须使用单双引号、安全问题以及数据库连接释放等。我们不能忽视这些。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门