【问题标题】:Show search results that include search criteria显示包含搜索条件的搜索结果
【发布时间】:2013-08-15 09:52:37
【问题描述】:

我已经为我的页面编写了搜索代码,但是我希望它显示包含搜索条件的产品...目前它只显示以 cirteria 开头的结果。

这是我的代码:

<?php
$name = $_GET["q"];
if ($name <= "") {
  echo ("");
}
else {
  $con = mysql_connect("localhost", "cl49-XXX", "vogalcms");
  if (!$con) {
    die('Could not connect: line 513 ' . mysql_error());
  }
mysql_select_db("cl49-XXX", $con) or die("Unable to select database");   
$result = mysql_query("SELECT * FROM products WHERE `prodname` LIKE '$name%' ") or die('Error: Line 519 (' . mysql_error() . ')');
  mysql_select_db("cl49-vogalcms", $con) or die("Unable to select database");   


  while ($row = mysql_fetch_array($result)) {
    $prodID = $row['prodID'];
    $prodname = $row['prodname'];
    $catagory = $row['catagory'];
    echo "
     <div class='row-fluid portfolio-block'>
    <div class='span5 portfolio-text'>
    <img src='admin/userpics/$prodID.jpg' height='50' width='50' alt='' />
    <div class='portfolio-text-info'>
                                                <h4>$prodname</h4>
    <p></p>
        </div>
        </div>
    <div class='span5'>
<div class='portfolio-info'>
Product ID
                                                <span>$prodID</span>
        </div>
  <div class='portfolio-info'>
                                                catagory
                                                <span>$catagory</span>
 </div>
 </div>
  <div class='span2 portfolio-btn'>
  <a href='edit_product.php?q=$prodID' class='btn bigicn-only'><span>View/Edit</span></a>
    </div>
    </div> ";
  }
}
?>

我希望能够搜索 ca,不仅显示 CAr、CArpet,还显示 nesCAfe?

【问题讨论】:

  • 一次又一次地在 SQL 中转义你的变量。 mysql_* 已弃用。不要在不需要的地方使用 fetch_array。你们是从哪个教程来的,总是一样的永无止境的错误。

标签: php mysql search


【解决方案1】:

只需将 where 子句更改为:

WHERE `prodname` LIKE '%$name%' 

【讨论】:

  • 我已经有了这个? ("SELECT * FROM products WHERE prodname` LIKE '$name%' ")`
  • 有两个 %s - LIKE 语句开头的 % 是不同之处。试试看。 :)
  • 太棒了!谢谢!另外,您知道如何显示类似22 found 的内容(22 是找到的产品示例)
  • 执行如下操作:$num_rows = mysql_num_rows($result);
  • 这将为您提供一个包含返回记录数的变量,然后您可以将其输出:)
【解决方案2】:

将您的搜索查询更改为

SELECT * FROM products WHERE `prodname` LIKE '%$name%'

【讨论】:

  • 我已经有了这个? ("SELECT * FROM products WHERE prodname` LIKE '$name%' ")`
  • 我的回答“%$name%”中有额外的% (2 %)。在关键字之前和之后使用% 将匹配整个关键字。如果您感到困惑,可以参考本教程mysqltutorial.org/mysql-like
最近更新 更多