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

深入理解php函数mysqli_query

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

随着Web应用的不断发展,PHP语言在Web应用开发中的使用越来越多。在PHP中,mysqli_query函数是一个非常常用的函数。主要用于执行SQL语句。那么我们在使用mysqli_query函数时需要注意哪些问题呢?这就是本文将要详细阐述的问题。

1。函数mysqli_query

的参数

mysqli_query 函数的语法格式如下:

mysqli_query(connection,query,resultmode);

其中,有三个参数:

connection:需要指定MySQL连接句柄,使用mysqli_connect()或mysqli_init()后返回的对象。

query:必需指定要执行的SQL语句,可能包括插入、更新、删除、查询等操作。

结果模式:可选,默认以关联数组 (MYSQLI_ASSOC)、数值数组 (MYSQLI_NUM) 或两者 (MYSQLI_BOTH) 形式返回结果集。要仅返回行统计信息或受影响的行数,请指定 MYSQLI_USE_RESULT 或 MYSQLI_STORE_RESULT。

2。函数mysqli_query的返回值

mysqli_query函数在执行查询时成功返回mysqli_result对象。如果插入、删除和更新操作成功,则返回 true。如果执行失败则返回 false。同时,mysqli_query还可以使用mysqli_affected_rows和mysqli_insert_id函数来获取受影响的行数并自动递增插入。 ID。

1。返回对象 mysqli_result

$conn = mysqli_connect("localhost", "user", "password", "example");
$result = mysqli_query($conn,"SELECT * FROM user where sex=1"); 

返回的$result是一个mysqli_result对象。

2。还原真相

$conn = mysqli_connect("localhost", "user", "password", "example");
$sql = "INSERT INTO user (name,age,sex)VALUES('tony',25,1)";
$result=mysqli_query($conn,$sql);
if($result){
    echo "插入成功!";
}else{
    echo "插入失败!";
}

执行成功则返回 true,失败则返回 false。

3。返回错误

$conn = mysqli_connect("localhost", "user", "password", "example");
$sql = "INSERT INTO user (name,age,sex,created_at)VALUES('tony',25,1)";
$result=mysqli_query($conn,$sql);
if($result){
    echo "插入成功!";
}else{
    echo "插入失败!";
}

当执行INSERT INTO user(name,age,gender,created_at)VALUES('tony',25,1)等SQL语句出现问题时,created_at字段缺失,返回false。

3。 mysqli_query 的安全性

当我们使用mysqli_query函数时,需要考虑安全问题。为了防止SQL注入,我们需要对输入参数进行过滤和检查。

1。过滤器输入参数

$name = mysqli_real_escape_string($conn,$_POST['name']);
$age = intval($_POST['age']);
$sex = intval($_POST['sex']);
$sql = "INSERT INTO user (name,age,sex)VALUES('$name','$age','$sex')";
$result=mysqli_query($conn,$sql);

在上面的例子中,我们使用了mysqli_real_escape_string()函数来过滤$name,以避免SQL注入的风险。

2。检查输入

$age = intval($_POST['age']);
$sex = intval($_POST['sex']);
if($age  120){
    echo "年龄不合法!";
    exit;
}
if($sex != 0 && $sex != 1){
    echo "性别不合法!";
    exit;
}
$name = mysqli_real_escape_string($conn,$_POST['name']);
$sql = "INSERT INTO user (name,age,sex)VALUES('$name','$age','$sex')";
$result=mysqli_query($conn,$sql);

在上面的例子中,我们使用intval函数将$age和$gender转换为整数,并进行合法性检查以避免非法输入。这样的话,就算有人想通过特殊字符来攻击,也是不行的。

4。使用mysqli_query时的注意事项

1。 mysqli_query函数不支持批量查询

如果需要批量执行SQL语句,可以使用mysqli_multi_query函数来实现。同时要注意每次查询结果的处理。

2。 mysqli_query函数必须与mysqli_fetch_

函数系列一起使用

执行mysqli_query函数后,必须使用一系列mysqli_fetch_函数来检索查询结果。一般来说,使用 mysqli_fetch_array 或 mysqli_fetch_assoc 函数。

总结

本文详细讲解了mysqli_query函数的参数、返回值、安全性以及注意事项。在使用mysqli_query函数时,我们必须验证参数的有效性并过滤注入攻击。同时要注意mysqli_query函数的使用场景。只有学习了mysqli_query函数的使用规则,才能更好的应对Web开发中的各种数据库操作。

版权声明

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

热门