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