-1

我正在创建一个虚拟在线商店来说明一些现实世界的功能,其中之一是在网站上搜索项目,即

我已经编写了 PHP 代码来处理这种情况,但它不能正常工作。它所做的事情是它与结果和结果数量相匹配,但它不显示它们,我当然不会这样做。

一直试图在 GOOGLE 上寻找答案,但没有找到相应的解决方案或针对我的问题的提示。

这里将列出我正在使用的代码:

PHP代码(search.php):

<?php 

    session_start();

    include('connect_mysql.php');

    $product_name = 'product_name';
    $product_qua = 'product_qua';
    $product_price = 'product_price';
    $product_image = 'product_image';
    $product_des = 'product_des';


    if (isset($_POST['keyword'])) 
    {
        $search = $_POST['keyword'];

        if (!empty($search))
        {
            $query = "SELECT product_name FROM products WHERE product_name='$search'";
            $query_search = mysql_query($query);

            echo mysql_num_rows($query_search);

            if (mysql_num_rows($query_search) >=1)
            {
                echo 'Results found: <br>';

                while ($query_row = mysql_fetch_row($query_search)) 
                {
                    echo $query_row['product_name'];

                }
                while($rows = mysql_fetch_array($query_search))
                { ?>
                    <table id='display'>
                    <tr><td><?php echo "<img src=$rows[$product_image] class='grow'>" ?></td></tr>

                    <tr>
                        <th></th>
                        <th><strong>Avalible</strong></th>
                        <th><strong>Price</strong></th>
                        <th><strong>Description</strong></th>
                    </tr>

                    <tr>
                    <td width='290px'><?php echo "$rows[$product_name]" ?></td>
                    <td width='290px'><?php echo "$rows[$product_qua]" ?></td>
                    <td width='290px'><?php echo "£ $rows[$product_price]" ?></td>
                    <td width='290px'><?php echo "$rows[$product_des]" ?></td>
                    </tr>
                    <tr>
                    <td><p>Please Login To purchase this item </p><br /><a href="login.php">Login</a></td>
                    </tr>
                    </table>

                <?php
                }

            } else {
              echo 'NO results found.';

            }

        }
    }

?>

HTML 代码 (index.php):

<form action="search.php" method="post">

        <input type="text" name="keyword" size="20" placeholder="Search for products...."/>
        <input type="submit" value="Search >>" />

</form>

当前结果的打印屏幕:

在此处输入图像描述

正如您已经注意到的那样,它还说找到了 3 个结果,这是正确的,因为我一直在搜索这是我的产品的通用名称,但只出现了两个表而且它们是空的。

网址:http ://studentnet.kingston.ac.uk/~k1024026/index.php

最后我的产品表包括: product_id product_name product_qua product_price product_image product_des product_type attrebiutes/columns

任何人都可以发现我可能在哪里出错......?

4

3 回答 3

0

首先,尝试删除它

while ($query_row = mysql_fetch_row($query_search)) 
                {
                    echo $query_row['product_name'];

                }

我还注意到您的代码中有一些错误的错字:

  • table id="display" 一个 id 应该是唯一的。如果您迭代它并且仍然希望它是一个 id,请使用 display-n 代替,例如,n 是产品的唯一 id。(或使用 class="display" 而不是 id)

  • 你应该看看 sql injection 以及如何打败它们。

于 2013-03-12T01:52:11.930 回答
0

我可能更愿意这样做:

$query = "SELECT product_name FROM products WHERE product_name LIKE %" . $search . "%";

希望它会有所帮助。然后使用 foreach 循环遍历结果,例如:

foreach ($search as $key => $result){
      echo $result . '<br />';
}
于 2013-03-12T01:54:11.663 回答
0
  1. mysql_fetch_row( $query_search)返回一个普通数组而不是关联数组,但您正在尝试使用键访问它的值 - $query_row [ 'product_name' ]。而是使用_fetch_array

  2. 有很多语法错误。函数名和参数列表之间有一个空格。

  3. 不要使用mysql_. 它们已被弃用(阅读:死亡)。请改用 PDO。

于 2013-03-12T02:08:17.247 回答