我存储了产品详细信息的数据库。 (身份证,姓名,价格,类别,单位)
首先,我在名为' 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>
<?}
我将数据提交给&#39; index.php&#39;并处理那里的变量。
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" }
答案 0 :(得分:0)
$ pro_name值是多少? 如果你使用的是implode,那么应该是一个像$ pro_name = array这样的数组(&#39; Fruit&#39;,&#39; Chocolate&#39;&#39; Mirror&#39;); 然后查询将是:
SELECT *
FROM products
-> WHERE p_name IN ("Fruit,Chocolate,Mirror")
ORDER BY p_name
ASC
但问题是查询仍然是错误的,因为&#34;,那么你应该删除并更改为
WHERE p_name IN (implode(',', $pro_name))
然后查询就像
SELECT *
FROM products
-> WHERE p_name IN (Fruit,Chocolate,Mirror)
ORDER BY p_name
ASC
答案 1 :(得分:0)
如果p_name是字符串类型,我非常确定你要爆发的$ pro_names需要用&#39;分隔。 (单引号分隔符)。看起来你的脚本中的内容将由sql解析器解释为列名。
答案 2 :(得分:0)
试试这个SQL
$pr_name = ltrim(implode(',' , '".$pro_name."'), ',');
$query = "SELECT *
FROM products
WHERE p_name IN ($pr_name)
ORDER BY p_name
ASC";
答案 3 :(得分:0)
感谢您的回复。帮助我解决问题。
这是我的解决方案:
<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 ...我的坏。