mysql奇怪的查数据函数mysql_query
sql 语句如果没有语法错误,那么在连接数据库执行之时,就算查询/删除的数据不存在!都会正常执行并返回true结果!
代码如下:
$conn=mysql_connect(‘localhost’,‘root’,‘aadsfs’);
if (!$conn){
echo’连接失败’;
exit;
}
$sql=’select * from stu where id=1111‘;//不存在此数据
$rs=mysql_query($sql,$conn);
if($rs){
echo’存在数据’;//此句会执行!
}else{
echo’失败了,不存在数据’;
}
以前用asp写程序时,没有接触过这样的问题!
因为都是用rs.eof or rs.bof来做select判断的!
原因:mysql_query返回的是资源类型,对于查询的结果,如果能在mysql正常执行的话,则返回true,其不会关心是否有对数据进行了操作!
所以,以上程序要改成如下,才能正确执行!
$conn=mysql_connect(‘localhost’,‘root’,‘aadsfs’);
if (!$conn){
echo’连接失败’;
exit;
}
$sql=’select * from stu where id=1111‘;//不存在此数据
$rs=mysql_query($sql,$conn);
if(!$rs){
echo’失败了,不存在数据’;
}
$stu=mysql_fecth_assoc($rs)//此函数是从数据库里取出数据
if(!empty($stu)){
echo’存在数据’;
}
顺便也写一下取mysql数据的几个函数
mysql_fecth_assoc():返回关联数组
mysql_fecth_row():返回索引数组
mysql_fecth_array():前两种的组合
mysql_fecth_object():返回对象类型
以上函数是按常用顺序依次排列,函数参数:为资源类型,每执行一次,游标下移一次,直到最后,返回false