本人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——初涉前端的小叶子。