提交搜索查询时出现代码错误

时间:2011-12-22 08:29:26

标签: php

我收到了错误:

  

不推荐使用:在第10行的C:\ xampp \ htdocs \ tet \ search_motifasni2.php中弃用了函数split()

     

注意:未定义的变量:第18行的C:\ xampp \ htdocs \ tet \ search_motifasni2.php中的sql

     

警告:mysql_num_rows()期望参数1为资源,第32行的C:\ xampp \ htdocs \ tet \ search_motifasni2.php中给出布尔值   doc,术语:

代码:

if (isset($_POST['Submit']))
{

        //retrieve search word, trim, remove duplicate
        $find = $_POST['find'];
        $find = ltrim($find);
        $find = rtrim($find);
        $find = split(" ",$find);//line 10
        $find = array_unique($find); 

。 。

        if($val<>" " and strlen($val)>0)
        {
            $sql .=" Terms = '$val' or";//line 18
        }
    }

。 。

    $query = "SELECT * FROM document";
    $result = mysql_query($query);
    $num = mysql_num_rows($result);//line 32

尝试了很多方法,但在搜索查询时仍然得到相同的结果。

4 个答案:

答案 0 :(得分:2)

  

不推荐使用:不推荐使用函数split()   第10行的C:\ xampp \ htdocs \ tet \ search_motifasni2.php

如上所述,拆分已被删除,请改用<{3}}

  

注意:未定义的变量:sql in   第18行的C:\ xampp \ htdocs \ tet \ search_motifasni2.php

你没有初始化$sql变量,在这段代码之前的某个地方,你应该将$ sql初始化为空字符串或其他东西

  

警告:mysql_num_rows()要求参数1为resource,boolean   在第32行doc中的C:\ xampp \ htdocs \ tet \ search_motifasni2.php中给出   术语:

如上所述,你传递给mysql_num_row的mysql_query结果是一个布尔值,你应该添加更多相关代码来到底...

编辑:来自mysql_query($query)的结果是错误的,您的查询有问题,您的mysql用户是否可以访问数据库或表?

答案 1 :(得分:1)

首先,不推荐使用split:而是使用explode。 (像这样:$find = explode(' ', $find);基本相同) 此外,您同时使用ltrim rtrim,我认为您也可以同时使用trim,这两者都可以。

抛出第二个错误,因为您使用的$sql变量尚未在第18行定义,您无法将字符串连接到尚未定义的变量(实际上您可以,因为php非常谦虚,但不是很好) 将$sql = '';放在if语句之前可以轻松解决。

最后一个错误意味着mysql_num_rows获取false作为参数,而它需要一个mysql资源。 $result为false,因此mysql_query返回false,执行查询时出现错误,请参阅here。您的表document是否存在?

答案 2 :(得分:0)

要使用$sql .= ...;',您必须先执行$sql = '';来定义它。并使用除分裂之外的其他功能。可能mysql_query失败并返回false

答案 3 :(得分:0)

从5.3.0开始,拆分确实已弃用,只需阅读:

http://php.net/manual/en/function.split.php

您正尝试使用“。”添加到$ sql变量。操作数,所以你需要检查先前是否声明了$ sql

我相信你的第3点已在此处得到回答:

MySQL query boolean given