使用 mysqli_query() 执行 MySQL 查询
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前端网发表,如需转载,请注明页面地址。
code前端网