如果不是条件'否则'不管用

时间:2015-03-08 11:40:11

标签: php mysqli

/ MY CODE /

if部分工作正常,但其他部分无效。 我甚至尝试过$ variable而不是直接回声,但仍然没有工作'否则'

更新

    <?php
   $db = new mysqli('localhost', 'root' ,'', 'timeline');

    if(!$db) {

        echo 'Could not connect to the database.';
    } else {

        if(isset($_POST['queryString'])) {
            $queryString = $db->real_escape_string($_POST['queryString']);

            if(strlen($queryString) >0) {

                $query = $db->query("SELECT collegename FROM college WHERE collegename LIKE '$queryString%' LIMIT 10");
                if(isset($query)) {
                echo '<ul>';
                    while ($result = $query ->fetch_object()) {
                        echo '<li onClick="fill(\''.addslashes($result->collegename).'\');">'.$result->collegename.'</li>';
                    }
                echo '</ul>';

                } else {

                    echo 'create some'; // this part is not working


                }
            } else {
                // do nothing
            }
        } else {
            echo 'There should be no direct access to this script!';
        }
    }
?>

帮帮我.....  甚至在stackoverflow上读了很多像问题但没有真正的回报

2 个答案:

答案 0 :(得分:0)

尝试

    if($query_run = $db->query("SELECT collegename FROM college WHERE collegename LIKE '$queryString%' LIMIT 10")){

    echo '<ul>';
                  while ($result = $query ->fetch_object()) {
                            echo '<li onClick="fill(\''.addslashes($result->collegename).'\');">'.$result->collegename.'</li>';
                  }

 echo '</ul>';
    } else {
         echo 'create some';
    }

答案 1 :(得分:0)

如果您使用mysqli::query,则if(isset($query))语句将始终评估为true,因为$query可能是FALSEmysqli_result对象。 isset会为这两个值返回TRUE,因此您的else代码将永远不会被调用。

isset上的文档:

  

如果var存在并且其值不是NULL,则返回TRUE,否则返回FALSE。

改为使用if($query !== false)

更新

您似乎正在检查$query以查看数据库中是否有点击。您需要检查结果中的number of rows,例如:

if ($query !== false && $query->num_rows > 0) {
   // Query was ok and at least one row was returned
}
else {
   // Will be reached if query was bad or there were no hits
}