【问题标题】:Search engine PHP return error [closed]搜索引擎PHP返回错误[关闭]
【发布时间】:2013-09-24 01:34:05
【问题描述】:
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("database360");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search Engine</title>
</head>

<body>

<center>
<h1 style="color:#069; font-size:36px;">TEST ENGINEenter code here</h1>

<form action="./result.php" method="get">
        <input type="text" name="input" size="50" <?php echo $_GET['input']; ?> />
        <input type="submit" value="search"/>
</form>
</center>

<hr/>

<?php 

$input = $_GET['input'];
$terms = explode(" ", $input);
$query = "SELECT * FROM search WHERE";

foreach ($terms as $each){
    $i++;
    if ($i == 1)
       $query .= "keywords LIKE '%each%' ";
    else
       $query .= "OR keywords LIKE '%each%' ";
}

//connect to database
mysql_connect("localhost", "root", "");
mysql_select_db("database360");
$query1 = mysql_query($query);
$numrows = mysql_num_rows($query1);
if ($numrows > 0){
    while ($rows=mysqlfetch_assoc($query1)){
        $id = $row['id'];
        $title = $row['title'];
        $description = $row['description'];
        $keywords = $row['keyword'];
        $link = $row['link'];

        echo "<h2><a href='$link'>$title</h2>
        $description<br></br>";

    }

}
else echo "No results found for \"<b>$input</b>\"";
//disconnect
mysql_close();
?>
</body>
</html>

错误信息是:

注意:未定义变量:i 在 C:\xampp\htdocs\SEARCH\result.php 上 第 33 行

警告:mysql_num_rows() 期望参数 1 是资源,布尔值 在第 46 行的 C:\xampp\htdocs\SEARCH\result.php 中给出 未找到结果 对于“联系”

【问题讨论】:

  • $i = 0;放在foreach循环之前。另外,请注意您写的是each(一个字符串)而不是$each(一个变量)。您的查询也容易受到攻击。查询错误很可能是WHEREkeywords之间没有空格(试试打印查询看看)
  • 致命错误:在 C:\xampp\htdocs\SEARCH\result.php 第 51 行调用未定义函数 mysqlfetch_assoc()

标签: php mysql


【解决方案1】:

在第 33 行你有 $i++,但你还没有初始化 $i

我预计您的 MySQL 查询中有语法错误。试试这个:

$query1 = mysql_query($query) or die(mysql_error()); 

这将显示您必须修复的 SQL 错误。

更多:您的 SQL 容易受到注入攻击。确保您正确地转义您的输入,并且不要使用mysql() - 它已被弃用。请改用mysqliPDO

【讨论】:

  • 更正语法后....致命错误:在第 51 行调用 C:\xampp\htdocs\SEARCH\result.php 中未定义的函数 mysqlfetch_assoc()
  • mysql_fetch_assoc()
  • 非常感谢 x100000000
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多