【问题标题】:Define a Query in undefined variable.在未定义的变量中定义查询。
【发布时间】:2014-05-22 07:02:06
【问题描述】:

我的搜索页面出现错误,服务器弹出以下消息:

注意:未定义的变量:查询 /home/tz005/public_html/COMP1687/search.php on line 64 最小长度 是 3

我应该在脚本的哪里进行更正以及如何定义查询?这是我的 php 脚本:

<?php

$min_length = 3; //min length of the search

if(strlen($query) >= $min_length){

        $query = htmlspecialchars($query); 

        $raw_results = mysqli_query($GLOBALS["___mysqli_ston"], "SELECT * FROM item_information
            WHERE (`itemtitle` LIKE '%".$query."%')") or die(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));


        if(mysqli_num_rows($raw_results) > 0){ // If it find's more than 0 results...

            while($results = mysqli_fetch_array($raw_results)){

echo "<p>".$results['itemtitle']."</p>"; // show's the results..


            }

        }
        else{ // If found nothing..
            echo "No results";
        }

    }
    else{ // if length of the search is less than defined on variable...
        echo "Minimum length is ".$min_length;
    }
?>

【问题讨论】:

  • 你在哪里声明或定义$query变量?它来自哪里?

标签: php


【解决方案1】:

if(strlen($query) &gt;= $min_length){ 行更改为if(isset($query) &amp;&amp; strlen($query) &gt;= $min_length){

【讨论】:

  • 或者使用!empty()而不是isset(),因为当代码中的某处是$query = $_GET['query']并且URL会像file.php?query=,这将再次出现同样的问题。
  • 为什么?! $query 的长度无论如何都不会 >= 到 $min_length
  • @techouse 这就是为什么:isset("") == true;!empty("") == false;。它们都工作得很好(在这个脚本中),但这是一点点logistic :) 还有更多关于它:techtalk.virendrachandak.com/php-isset-vs-empty-vs-is_null
  • 冬青嘘*t。不知道isset() 坏了。我认为它在 Perl 中像 defined 一样工作,但是在阅读了这个 stackoverflow.com/questions/418066/… 之后......是的......另一个 PHP 失败了:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
相关资源
最近更新 更多