Php 使用复选框从表中检索信息

Php 使用复选框从表中检索信息,php,mysql,Php,Mysql,我使用复选框将产品存储在名为products的表列中。它们都存储在单元格中,并用逗号分隔。 现在我尝试从表中检索信息。如果我选中更多产品,它将显示所有拥有产品的用户。所有用户产品保存在一个单元格中,ex产品用逗号分隔(10,50,90160) 我认为问题出现在这里,因为更多的值存储在一个单元格中,并用。。我总是在单元格中寻找特定的值 任何帮助或建议都将不胜感激对于每个发布的proizvodi值使用Mysql的FIND_INSET函数(即使用foreach) e、 g proizvodi字段有两行

我使用复选框将产品存储在名为products的表列中。它们都存储在单元格中,并用逗号分隔。 现在我尝试从表中检索信息。如果我选中更多产品,它将显示所有拥有产品的用户。所有用户产品保存在一个单元格中,ex产品用逗号分隔(10,50,90160)

我认为问题出现在这里,因为更多的值存储在一个单元格中,并用。。我总是在单元格中寻找特定的值


任何帮助或建议都将不胜感激

对于每个发布的
proizvodi
值使用Mysql的FIND_INSET函数(即使用
foreach

e、 g

proizvodi字段有两行(10,11,12,13)和11,12,13,22

下面的代码应该可以工作

<?php

$variable=array(11,13);

$upit= "SELECT * FROM `clanovi` WHERE FIND_IN_SET($variable[0],proizvodi)";

if(sizeof($variable)>1)
{
    for($i=1; $i<sizeof($variable); $i++)
    {
        $upit.=" OR FIND_IN_SET($variable[$i],proizvodi) ";
}
}
echo $upit;
echo "<br />";
$result=mysqli_query($con,$upit);
while ($row = mysql_fetch_array($result)) {
echo "<pre>";
print_r($row);
}


//
?>

像这样使用MySQL的FIND\u IN\u SET string函数

$variable=$_POST['proizvodi'];

print_r($variable);

var_dump ($variable); 
//SELECT * FROM CLANOVI WHERE OR PROIZVODI LIKE '%50%';

$upit= "SELECT * FROM `clanovi` WHERE PROIZVODI LIKE '%$variable[0]%'"; 

if(sizeof($variable)>1)
{
        for($i=1; $i<sizeof($variable); $i++)
        {
            $upit.=" OR PROIZVODI LIKE '%$variable[$i]%' ";
        }
}

阅读更多信息:

此代码适用于我的案例。Iam发布,以防将来有其他人遇到同样的问题

$variable=$\u POST['proizvodi'];
打印(变量);
变量转储($变量);
//选择*FROM CLANOVI WHERE或PROIZVODI,如“%50%”;
$upit=“从'clanovi'中选择*,其中PROIZVODI类似于“%$variable[0]”;
如果(sizeof($variable)>1)
{
对于($i=1;$i使用like

例如“SELECT*FROM
clanovi
WHERE PROIZVODI LIKE“%$variable[0]”“

您是否尝试在网站上搜索类似的问题?是的,我找不到可能有用的类似答案。最近我们收到了太多的“单元格中逗号分隔的值”问题(想想)。正如@GordonM所说,有许多这样的问题,其中许多问题都有最好的答案,“以正确的方式重新设计您的数据库”我已经尝试过,但仅当选中的值首先存储在单元格中时才起作用。例如,如果选择的值是10,而存储在表中的值是(15,18,10),则不起作用,如果存储了值(10,15,18123)然后它可以工作,只能找到一个第一个值。我已经发布了。感谢您的帮助,它在这里的工作“在\u集中查找\u”不取决于它的第一个值还是第一个打印您的查询和从phpmyadmin检查以外的任何位置。根据修改我已经尝试过,即使我签入phpmyadmin,情况仍然相同。当我打印查询时,它看起来是选择的*从
clanovi
其中查找集合(50,PROIZVODI)或查找集合(100,PROIZVODI)或查找集合(101,PROIZVODI)或查找集合(102,PROIZVODI)在这种情况下,值100是一行中的第一个值,我得到了结果,值102不在第一个位置,它不会打印。我已经尝试过,它不起作用。但我找到了解决方案。谢谢你的postreally?10,11,12怎么样?你的查询将匹配所有的值
SELECT FIND_IN_SET('a','a,b,c');
<?php

$variable=array(11,13);

$upit= "SELECT * FROM `clanovi` WHERE FIND_IN_SET($variable[0],proizvodi)";

if(sizeof($variable)>1)
{
    for($i=1; $i<sizeof($variable); $i++)
    {
        $upit.=" OR FIND_IN_SET($variable[$i],proizvodi) ";
}
}
echo $upit;
echo "<br />";
$result=mysqli_query($con,$upit);
while ($row = mysql_fetch_array($result)) {
echo "<pre>";
print_r($row);
}


//
?>
Array
(
    [0] => 1
    [id] => 1
    [1] => 10,11,12,13
    [proizvodi] => 10,11,12,13
)

Array
(
    [0] => 2
    [id] => 2
    [1] => 11,12,13,22
    [proizvodi] => 11,12,13,22
)


$variable=array(11,13);//here I hard coded but it will be posted data(checkboxes value)
SELECT * FROM `clanovi` WHERE 
FIND_IN_SET($variable[1],PROIZVODI) > 0 AND 
FIND_IN_SET($variable[2],PROIZVODI) > 0 ...
$variable=$_POST['proizvodi'];

print_r($variable);

var_dump ($variable); 
//SELECT * FROM CLANOVI WHERE OR PROIZVODI LIKE '%50%';

$upit= "SELECT * FROM `clanovi` WHERE PROIZVODI LIKE '%$variable[0]%'"; 

if(sizeof($variable)>1)
{
        for($i=1; $i<sizeof($variable); $i++)
        {
            $upit.=" OR PROIZVODI LIKE '%$variable[$i]%' ";
        }
}