Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 - Fatal编程技术网

Php Mysql显示所有记录

Php Mysql显示所有记录,php,mysql,Php,Mysql,我需要一个SQL查询,显示所有记录,如果它也是重复的。比如说 select * from table where true and p_id in(1,2,1,1) 仅显示1和2中的记录,但我需要在while循环中重复该记录 使用代码更新: $cook = unserialize($_COOKIE["pro_cook"]); foreach ($cook as $something) { $merc[] = $something; } foreach ($size as $new_size

我需要一个SQL查询,显示所有记录,如果它也是重复的。比如说

select * from table where true and p_id in(1,2,1,1)
仅显示1和2中的记录,但我需要在while循环中重复该记录

使用代码更新:

$cook = unserialize($_COOKIE["pro_cook"]);
foreach ($cook as $something) {
  $merc[] = $something;
}
foreach ($size as $new_size) {
  $size_array[] = $new_size;
}

$items = count($merc);
$mer = rtrim(implode(',', array_reverse($merc)), ',');
$fulclr = "and p_id in (".$mer.")";
$asd = "(p_id,".$mer.")";
$result = mysql_query("select * from product_details where true ".$fulclr." order by field".$asd."");
希望这会有所帮助

$ids = "1,2,1,1";

$sql = "select * from table where true and p_id in (".$ids.")";
$rec = mysql_query($sql);

$dbData = array();
while($res = mysql_fetch_assoc($rec)) {
    $dbData[$res['p_id']] = $res;
}

$ids = explode(',', $ids);

$newArray = array();
foreach ($ids as $id) {
   if (!empty($dbData[$id])) {
       $newArray[] = $dbData[$id];
   }
}

请写一些你已经尝试过的代码,我想我们需要更多的信息。你能展示你目前拥有的代码吗?我想说,如果没有一个UNION或JOIN与同一个表,你就无法做到这一点——而基于你传递给in子句的ID动态地做到这一点几乎是不可能的。我建议你试着用代码而不是在查询中解决它。你应该将代码添加到你的问题@user312677。这取决于你的表结构。如果p_id column是uniqe,你只得到2行是正常的,但如果不是uniqe,你应该得到所有值为1和2的行,从p_id所在的表中选择*(1,2)足够了,但正如我说的,检查结构我认为mysql在(1,2)中的p_id和(1,2,1,1)中的p_id没有区别,所以我不明白你的意思。如果db中有多行的值为1或2,他将得到(1,2)中p_id的所有行,这就足够了
p_id
应该包含相同的值或不同的值?假设我们的表有5行,如果其中两行的p_id=1,其中一行的p_id=2,在本例中为“p_id in(1,2)”版本将返回3行。如果数据库中只有2条记录,那么?我认为这个问题清楚地说明了问题所在。我仍然不明白你的观点,如果数据库中有两条记录,如果它们的p_id为1或2,你将得到那两行,如果其中一条p_id=3,那么你只得到一行,以此类推,(1,2)状态中的p_id与此相同(p_id=1或p_id=2)