Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP实现mysql数据库中的数组搜索_Php_Mysql_Arrays_Select_Implode - Fatal编程技术网

用PHP实现mysql数据库中的数组搜索

用PHP实现mysql数据库中的数组搜索,php,mysql,arrays,select,implode,Php,Mysql,Arrays,Select,Implode,我在一个数据库中存储了产品的详细信息。(标识、名称、价格、类别、单位) 首先,我在一个名为“input.php”的php文件中列出了用于选择的产品。它就像一个符咒 // SQL query $query = "SELECT * FROM products ORDER BY p_name ASC"; $result = mysql_query($query);

我在一个数据库中存储了产品的详细信息。(标识、名称、价格、类别、单位)

首先,我在一个名为“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>
                <?}
第三步,我被绊倒了……我需要列出挑选的产品的详细信息

我的想法是从数据库中选择细节,搜索我之前选择的产品名称

我试过了,比如,内爆……等等,但没用(


$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_名称是字符串类型,我很确定您正在内爆的$pro_名称需要用“(单引号分隔符)分隔。看起来您脚本中的内容会被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']?>">

SQL


我认为名称中包含查询无法处理的字符,因此现在基于ID的查询。我不知道为什么一开始我不使用ID…我的错。

您得到了什么错误消息或输出?如果
p\u name
是VARCHAR,那么
中的
语句应该有
在('p\u name\u 1',p\u name\u 2')中
您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解在第3行“V szivattyú、120 l/p szivattyú、24 hónapra bőVített garancia)”附近使用的正确语法。我尝试了它:警告:内爆()[函数.内爆]:在第49行的C:\AppServ\www\projekt\hardver\index.php中传递的参数无效。您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,在第3var_dump($pro_name);array(3){[0]=>string(14)“12v szivattyú”[1]=>string(17)”行使用的语法是否正确120 l/p szivattyú“[2]=>字符串(28)“24 hónapra bővítet garancia”}感谢您的回复!var_dump(内爆(“,”,“,$proúname));结果:字符串(65)“12 v szivattyú”,“120 l/p Szivattú”,“24 hónapra bővítet garancia“您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第3行“V szivattyú、120 l/p szivattyú、24 hónapra bőVített garancia)ORDER BY pú的正确语法
SELECT  * 
                          FROM      products
                         -> WHERE     p_name IN (Fruit,Chocolate,Mirror)
                          ORDER BY  p_name
                          ASC
 $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 query
$query = " SELECT      * 
           FROM       products
           WHERE      p_id IN ($list)
           ORDER BY   p_name
           ASC ";