簡體   English   中英

使用PHP在mysql數據庫中進行數組搜索

[英]Array search in mysql database with PHP

我有一個數據庫,用於存儲產品詳細信息。 (編號,名稱,價格,類別,單位)

首先,我在名為“ 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,內爆...等,但沒有成功。 :(

// 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的值是多少? 如果您使用的是爆破式,則應使用$ 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

如果p_name是字符串類型,我很確定您要插入的$ pro_names需要用'(單引號分隔符)定界。 看起來您腳本中的內容將由sql解析器解釋為列名。

試試這個SQL

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

感謝您的答復。 幫助我很多,以解決問題。

這是我的解決方案:

<input type="checkbox" name="pro_id[]" value="<?=$row['p_id']?>">

它創建一個數組:

string(24) "6, 7, 10, 20, 21, 49, 54"

$list = implode(', ', $pro_id);

的SQL

// SQL query
$query = " SELECT      * 
           FROM       products
           WHERE      p_id IN ($list)
           ORDER BY   p_name
           ASC ";

我認為名稱包含查詢無法處理的字符,因此現在基於ID的查詢。 我不知道為什么我一開始就不使用id。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM