本人php小白一枚。最近在学习php的相关知识,常常需要对INSERT、SELECT等sql语句的返回结果进行判断。这给我造成了很多的困扰,在进行了各种尝试之后,将我的总结整理在此。
1.INSERT语句

$sql = "INSERT INTO tableName VALUES(NULL,...)";
$result = mysqli_query($conn,$sql);
echo $result ? '1' : '-1';

使用INSERT语句向数据库中插入数据,此时$result的值为false或者true,因此可以直接作为判断条件。
2.SELECT语句

$sql = "SELECT * FROM tableName WHERE ...";
$result = mysqli_query($conn,$sql);

SELECT查询语句返回的结果$result是一个对象,不能直接作为判断条件,此时需要抓取$result中的数据才能做进一步的判断。

举个栗子,假设此时有这样一个需求,“在数据库中查找用户输入的用户名和密码是否正确”,数据库中不同的用户名仅对应一条记录。此时有两种方式,一种是返回查找到的记录,另一种是返回查找到的记录个数。
方法1:SELECT * FROM tableName(查找符合条件的记录)
关键语句

$sql = "SELECT * FROM t_login WHERE name='$name' AND pwd='$pwd'";
$result = mysqli_query($conn,$sql);
$row = mysqli_fetch_row($result);//若查找到$row返回索引数组;若未查到,$row为NULL。

此处也可用$row =mysqli_fetch_assoc($result)语句。若找到,返回一个关联数组;若为找到,返回也是NULL。此处不宜用$row =mysqli_fetch_all($result,MYSQLI_ASSOC);该语句不论找到与否,返回的都是一个数组,不能作为判断条件。
方法1完整代码如下:

<?php
    @$name = $_REQUEST['name'] or die('name is request');
    @$pwd = $_REQUEST['pwd'] or die('password is request');
    $conn = mysqli_connect('127.0.0.1','root','','databaseName');
    $sql = 'set names utf8';
    mysqli_query($conn,$sql);
    $sql = "SELECT * FROM t_user WHERE uname='$name' AND upwd='$pwd'";
    $result = mysqli_query($conn,$sql);
    $row = mysqli_fetch_assoc($result);//若查找到$row返回索引数组,若未查到,$row为NULL
    if($row){
        echo "success";
    }else{
        echo 'error';
    }
?>

方法2:SELECT count(id)* FROM tableName(查找符合条件的记录个数)

    $sql = "SELECT count(id) FROM t_login WHERE uname='$name' AND upwd='$pwd'";
    $result = mysqli_query($conn,$sql);
    $row = mysqli_fetch_row($result);

若找到,此时返回的结果为array(1) { [0]=> string(1) "1" } ,表示返回的是一个长度为1的数组,其值为长度为1的字符串,即$row[0]==1;若未找到符合条件的记录,这个值为0。
若采用$row = mysqli_fetch_row($result);语句来抓取数据,若找到符合条件的记录,返回的结果为array(1) { ["count(uid)"]=> string(1) "1" } ,即$row['count(uid)']=1
方法2完整代码如下:

<?php
        @$name = $_REQUEST['name'] or die('name is request');
        @$pwd = $_REQUEST['pwd'] or die('password is request');
        $conn = mysqli_connect('127.0.0.1','root','','databaseName');
        $sql = 'set names utf8';
        mysqli_query($conn,$sql);
        $sql = "SELECT count(id) FROM t_login WHERE uname='$name' AND upwd='$pwd'";
        $result = mysqli_query($conn,$sql);
        $row = mysqli_fetch_row($result);
        if($row[0]!=0){
            echo "success";
        }else{
            echo 'error';
        }
    ?>

By——初涉前端的小叶子。


叶子
54 声望1 粉丝