php - 使用 PHP 在 mysql 数据库中进行数组搜索

标签 php mysql arrays select implode

有一个数据库,我在其中存储产品详细信息。 (id、名称、价格、类别、单位)

首先,我在名为“input.php”的 php 文件中列出了可供选择的产品。它就像一个魅力。

// SQL query

    $query = "SELECT    * 
              FROM      products
              ORDER BY  p_name
              ASC";

            $result = mysql_query($query);
            if($result === FALSE) {die(mysql_error());}?>

                <table width="100%">
                    <tr>
                        <td></td>
                        <td width="800px"><h1>Product name</h1></td>
                        <td width="400px"><h1>Product price</h1></td>
                        <td>Category</td>
                    </tr>
                </table>
            <?
            while ($row = mysql_fetch_assoc($result)) {?>
                <table>
                    <tr>
                        <td><input type="checkbox" name="pro_name[]" value="<?=$row['p_name']?>"></td>
                        <td width="800px" align="left"><b><?=$row['p_name']?></b></td>
                        <td width="400px" align="left"><?=$row['p_price']?></td>
                        <td align="center"><?=$row['p_cat']?></td>
                    </tr>
                </table>
                <?}

我将数据提交到“index.php”并处理其中的变量。

 if($_SERVER['REQUEST_METHOD']== "POST"){

// Variables

$c_name = $_POST['c_name'];             //  ['company name']
$c_consumption = $_POST['c_consumption'];   //  ['company consumptions']
$f_price = $_POST['f_price'];               //  ['fuel price']
$o_sales = $_POST['o_sales'];               //  ['sales']
$pro_name = $_POST['pro_name'];         //  ['products names']
$pro_id = $_POST['pro_id'];             //  ['product id']  
$pro_price = $_POST['pro_price'];           //  ['product price']

我陷入困境的第三步...我需要列出所选产品的详细信息。

我的想法是从数据库中选择详细信息,并搜索我之前选择的产品名称。

我尝试过 IN、LIKE、implode.... 等,但没有成功。 :(

// SQL query

      $query = "SELECT  * 
                      FROM      products
                      WHERE     p_name IN (".implode(',', $pro_name).")
                      ORDER BY  p_name
                      ASC";

            $result = mysql_query($query);
            if($result === FALSE) {die(mysql_error());}

            while ($row = mysql_fetch_array($result)) {?>
                <table>
                    <tr>                            
                        <td width="800px" align="left"><b><?=$row['p_name']?></b></td>
                        <td width="400px" align="left"><?=$row['p_price']?></td>
                        <td align="center"><?=$row['p_cat']?></td>
                    </tr>
                </table>
                <?}
                }

编辑:

 var_dump($pro_name); result

 array(3) { [0]=> string(14) "12 V szivattyú" [1]=> string(17) "120 l/p szivattyú" [2]=> string(28) "24 hónapra bővített garancia" } 

最佳答案

$pro_name 值是多少? 如果您使用 implode 那么应该是一个类似 $pro_name=array('Fruit','Chocolate','Mirror'); 的数组 那么查询将是:

SELECT  * 
                      FROM      products
                     -> WHERE     p_name IN ("Fruit,Chocolate,Mirror")
                      ORDER BY  p_name
                      ASC

但问题是查询仍然错误,因为“,那么你应该删除并更改为

WHERE     p_name IN (implode(',', $pro_name))

然后查询将类似于

SELECT  * 
                          FROM      products
                         -> WHERE     p_name IN (Fruit,Chocolate,Mirror)
                          ORDER BY  p_name
                          ASC

关于php - 使用 PHP 在 mysql 数据库中进行数组搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27801833/

相关文章:

php - MySQL 上的 Doctrine findBy() 包含带有特殊字符的列

mysql - 如何使用两个不同的 where 子句从 MySQL 查询中获得至少两个结果?

mysql - 使用元素将 xml 加载到 mysql 表中

c - 为什么将数组作为参数传递时有一个自由维度?

javascript - 如何使用 swift3 从 alamofire 响应中获取字典数组的值

javascript - react : Display element of array by id

php - 布局 xml 中的 Magento 条件 block

php - 如何使用 codeigniter 将 file_path 插入数据库

javascript - 使用 Web 通知 API 进行推送

php - 如果有索引,我如何优化 MySQL 查询和事件