Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跳过if并直接进入else语句的PHP代码_Php_Mysql_Debugging_If Statement - Fatal编程技术网

跳过if并直接进入else语句的PHP代码

跳过if并直接进入else语句的PHP代码,php,mysql,debugging,if-statement,Php,Mysql,Debugging,If Statement,由于某种原因,它不会进入我的if声明 这可能是很明显的事情,但已经很晚了,我在这里被困了半个小时 <?php $id = $_GET['id']; if ($id == "") { //it goes here correctly } else { $result = mysql_query("SELECT * FROM posts WHERE id= $

由于某种原因,它不会进入我的if声明

这可能是很明显的事情,但已经很晚了,我在这里被困了半个小时

<?php
            $id = $_GET['id'];
            if ($id == "") {
                //it goes here correctly
            } else {
                $result = mysql_query("SELECT * FROM posts WHERE id= $id");
                if ($result == "0") {
                    //It does not go here.
                } else {
                   //It goes here correctly
                    }
                }
            }
            ?>


非常感谢Luca

如果您的查询正常,则返回一个资源,
$result==“0”
始终是
false

如果您的查询正常,则返回一个资源,
$result==“0”
始终是
false

我不知道为什么您希望从
mysql\u查询
获取
0
作为返回值

(我的重点):

用于选择、显示、描述、解释和其他返回语句 resultset,mysql_query()在成功时返回资源,在成功时返回FALSE 错误

[……]

使用mysql_num_rows()可以找出一个数据库返回了多少行 选择语句或mysql\u infected\u rows()以了解有多少行 受DELETE、INSERT、REPLACE或UPDATE语句的影响

如果用户不这样做,mysql_query()也将失败并返回FALSE 具有访问查询引用的表的权限

因此,通过猜测,您真正想要的代码是:

$id = $_GET['id'];
if ($id == "") {
    //it goes here correctly
} else {
    $result = mysql_query("SELECT * FROM posts WHERE id= $id");
    if ($result === false || mysql_num_rows($result) === 0) {
        //It always goes to else statement.
    } else {
       //It goes here correctly
    }
}

我不知道为什么您希望从
mysql\u query
获取
0
作为返回值

(我的重点):

用于选择、显示、描述、解释和其他返回语句 resultset,mysql_query()在成功时返回资源,在成功时返回FALSE 错误

[……]

使用mysql_num_rows()可以找出一个数据库返回了多少行 选择语句或mysql\u infected\u rows()以了解有多少行 受DELETE、INSERT、REPLACE或UPDATE语句的影响

如果用户不这样做,mysql_query()也将失败并返回FALSE 具有访问查询引用的表的权限

因此,通过猜测,您真正想要的代码是:

$id = $_GET['id'];
if ($id == "") {
    //it goes here correctly
} else {
    $result = mysql_query("SELECT * FROM posts WHERE id= $id");
    if ($result === false || mysql_num_rows($result) === 0) {
        //It always goes to else statement.
    } else {
       //It goes here correctly
    }
}

即使您没有该id的任何数据,它也会返回“true”,因为您的查询已成功执行。 相反,您可以这样尝试:

$result = mysql_query("SELECT * FROM posts WHERE id= $id");
 $rows=mysql_num_rows($result);
 if($rows>0){
  //you have data to work with 
 }
 else{
  //no data 
 }

即使您没有该id的任何数据,它也会返回“true”,因为您的查询已成功执行。 相反,您可以这样尝试:

$result = mysql_query("SELECT * FROM posts WHERE id= $id");
 $rows=mysql_num_rows($result);
 if($rows>0){
  //you have data to work with 
 }
 else{
  //no data 
 }

哦,明白了。。我对PHP非常陌生。感谢you@LucaDeCaprio不客气。请记住,始终可以使用
var\u dump
查看变量的内容。噢,明白了。。我对PHP非常陌生。感谢you@LucaDeCaprio不客气。请记住,您始终可以使用
var\u dump
查看变量的内容。谢谢您,这非常有效。我对PHP相当陌生。非常感谢。@LucaDeCaprio很乐意帮忙。如果你认为某个答案解决了你的问题,你应该将答案标记为已接受。谢谢你,这非常有效。我对PHP相当陌生。非常感谢。@LucaDeCaprio很乐意帮忙。如果你认为某个答案解决了你的问题,你应该将该答案标记为已接受。