在我的网站上用php搜索

时间:2012-04-06 15:04:45

标签: php html mysqli

我在我的网站上搜索时遇到问题我不明白为什么它会给我这个错误

这是我的表单代码

<form action="index.php?cat=search_results&learn_id=1" method="post">
      <div id="topSearchBodyStyle">
        <input type="text" name="search" class="topSearchTextBackground" />
      </div>
      <div id="topSearchButtonStyle">
        <input type="submit" name="submit" class="topSearchButtonBackground" value="" />
      </div>
    </form>

这是具有php代码的页面

<?php 

    $getSearch = $_POST['search'];
    trim($getSearch);

    if(!get_magic_quotes_gpc()) {
        $getSearch = addslashes($getSearch);
        }

    $connectToDb = "select * from tutorials where tutorial_title like '%.$getSearch.%'"; 
    $searchResults = $db->query($connectToDb) or die($db->error);
    if ($searchResults){
        $numResultas = $searchResults ->num_rows;
        echo "<p>Found : " . $numResultas . "</p>";
        while($row = mysqli_fetch_array($searchResults)) {

            echo $row['tutorial_title'];    
        }
    }else{
        echo "cant connect";
        }
?>

任何想法为什么它给我这个关于“Undefined index:search”的说明 为什么结果会变成“0”

1 个答案:

答案 0 :(得分:1)

从您提供的代码示例中,我没有看到您获得Undefined index: search的原因,但是,您确定$_POST['search']实际设置了吗?如果这是某个框架或其他项目的一部分,我已经看到一些取消设置$ _POST和$ _GET,你必须以另一种方式访问​​它们。

未定义的索引错误是否可能来自代码中的其他行?

如果通过$_POST['search']获得值,则得到0结果的原因是因为SQL语句中有错误。

应该是:"select * from tutorials where tutorial_title like '%".$getSearch."%'"

最后,您应该使用mysql_real_escape_string代替addslashes,或者更好prepared statements