2

我对 php 很陌生,我正在开发一个带有搜索栏的网站。

我使用了一些代码来实现搜索查询以从我的数据库中搜索产品。搜索查询工作正常并显示所有需要显示的必需产品。

但是,我希望这些项目具有指向产品详细信息页面的链接,该页面显示有关该特定产品的更多信息。但是,我不知道您如何将其表示为使用 html 的链接。

我的搜索代码如下:

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');
$search_output = "";
if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
    $searchquery = preg_replace('#[^a-z 0-9?]#i', '', $_POST['searchquery']);
    if($_POST['filter1'] == "Food"){
        $sqlCommand = "SELECT * FROM tbl_product WHERE pd_name LIKE '%$searchquery%'";
    }
    include_once("config.php");


    //Database connections below


     mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error()); 
 mysql_select_db($dbName) or die(mysql_error());

    $query = mysql_query($sqlCommand) or die(mysql_error());
    $count = mysql_num_rows($query);
    if($count >= 1){
        $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />";
        while($row = mysql_fetch_array($query))
        {
            $pd_name = $row["pd_name"];
        $search_output .= "$pd_name<br />";
        } // close while
    } else {
        $search_output = "<hr />0 results for <strong>$searchquery</strong><hr />";
    }
}
?>
<html>
<head>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Search for dishes : 
  <input name="searchquery" type="text" size="30" maxlength="100"> 
In: 
<select name="filter1">
<option value="Food">Food</option>

</select>
<input name="myBtn" type="submit" value="Search">

<br />
</form>
<div>
<?php echo $search_output; ?>
</div>
</body>
</html>

我希望它参考的链接是:

<a href="" . $_SERVER['PHP_SELF'] . "?c=$catId&p=$pd_id" . "">$pd_name</a>

但是,添加此引用时,它似乎不起作用。任何帮助,将不胜感激。提前致谢。

4

1 回答 1

1

尝试切换这个:

$pd_name = $row["pd_name"];
$search_output .= "$pd_name<br />";

有了这个:

$pd_name = $row["pd_name"];
$pd_id   = $row["pd_id"];
$search_output .= '<a href="' . $_SERVER['PHP_SELF'] . '"?c=$catId&p=' . $pd_id . '">' . $pd_name . '</a><br>';

顺便说一句,您需要阅读 SQL 注入,因为您应该在将用户输入数据传递到数据库之前对其进行转义。至少改变这个:

$sqlCommand = "SELECT * FROM tbl_product WHERE pd_name LIKE '%$searchquery%'";

对此:

$sqlCommand = "SELECT * FROM tbl_product WHERE pd_name LIKE '%".mysql_real_escape_string($searchquery)."%'";
于 2012-04-18T13:43:16.347 回答