2017-10-14 143 views
0

警告:mysql_num_rows()预计参数1是资源,布尔在/storage/ssd5/102/3255102/public_html/search.php给出线29PHP警告同时使搜索引擎

我的代码:

<?php 
    $button = $_GET [ 'submit' ]; 
    $search = $_GET [ 'search' ]; 

    if(!$button) 
     echo "you didn't submit a keyword"; 
    else { 
     if(strlen($search) <= 1) 
       echo "Search term too short"; 
     else { 
       echo "You searched for <b> $search </b> <hr size='1' > </ br > "; 
       mysql_connect("localhost","id3255102_data","I AM NOT GOING TO TELL YOU MY PASS!") ; 
       mysql_select_db("id3255102_base"); 

       $search_exploded = explode (" ", $search); 
       $x = 0; 
       foreach($search_exploded as $search_each) { 
         $x++; 
         $construct = ""; 
         if($x == 1) 
           $construct .="keywords LIKE '%$search_each%'"; 
         else 
           $construct .="AND keywords LIKE '%$search_each%'"; 
       } 

       $construct = " SELECT * FROM SEARCH_ENGINE WHERE $construct "; 
       $run = mysql_query($construct); 

       $foundnum = mysql_num_rows($run); 

       if ($foundnum == 0) 
         echo "Sorry, there are no matching result for <b> $search </b>. </br> </br> 1. Try more general words. for example: If you want to search 'how to create a website' then use general keyword like 'create' 'website' </br> 2. Try different words with similar meaning </br> 3. Please check your spelling"; 
       else { 
         echo "$foundnum results found !<p>"; 

         while($runrows = mysql_fetch_assoc($run)) { 
           $title = $runrows ['title']; 
           $desc = $runrows ['description']; 
           $url = $runrows ['url']; 

           echo "<a href='$url'> <b> $title </b> </a> <br> $desc <br> <a href='$url'> $url </a> <p>"; 

         } 
       } 

     } 
    } 
?> 

我在等这么久所以请帮助我。

PHP版本:5.6 教程:http://mrbool.com/how-to-create-your-own-search-engine-with-php-and-mysql/32733

+3

回声你的查询是否有效 – urfusion

+1

检查你的查询结果集中的行数是否成功或失败时是否为FALSE。 – honarkhah

+2

您使用的是完全过时的mysql连接器,这个连接器已经过时多年了,并且自从PHP版本7以来实际上已经被完全删除。结果,您的代码对sql注入攻击全面开放。请阅读将“准备好的语句”与“参数绑定”组合使用以避免此类漏洞的优点。 – arkascha

回答

0

你的问题涉及到$构建= “”; & $ construct。=“AND关键字LIKE'%$ search_each%'”;

你$构建设置为空环路和您的查询像这样运行后:

SELECT * FROM SEARCH_ENGINE WHERE和关键字LIKE '%$ search_each%'

<?php 
    $button = $_GET [ 'submit' ]; 
    $search = $_GET [ 'search' ]; 

    if(!$button) 
     echo "you didn't submit a keyword"; 
    else { 
     if(strlen($search) <= 1) 
       echo "Search term too short"; 
     else { 
       echo "You searched for <b> $search </b> <hr size='1' > </ br > "; 
       mysql_connect("localhost","id3255102_data","I AM NOT GOING TO TELL YOU MY PASS!") ; 
       mysql_select_db("id3255102_base"); 

       $search_exploded = explode (" ", $search); 
       $construct = ''; 
       foreach($search_exploded as $search_each) { 
        $construct .="AND keywords LIKE '%$search_each%'"; 
       } 

       $construct = " SELECT * FROM SEARCH_ENGINE WHERE 1 $construct "; 
       $run = mysql_query($construct); 

       $foundnum = mysql_num_rows($run); 

       if ($foundnum == 0) 
         echo "Sorry, there are no matching result for <b> $search </b>. </br> </br> 1. Try more general words. for example: If you want to search 'how to create a website' then use general keyword like 'create' 'website' </br> 2. Try different words with similar meaning </br> 3. Please check your spelling"; 
       else { 
         echo "$foundnum results found !<p>"; 

         while($runrows = mysql_fetch_assoc($run)) { 
           $title = $runrows ['title']; 
           $desc = $runrows ['description']; 
           $url = $runrows ['url']; 

           echo "<a href='$url'> <b> $title </b> </a> <br> $desc <br> <a href='$url'> $url </a> <p>"; 

         } 
       } 

     } 
    } 
?>