0

需要帮助来解决选择查询问题,但问题是我无法ids通过WHERE IN (pid) clause. 选择ids从数据库中获取所有内容的查询IN (pid)

1)if session pid is 29 then it should be select only 27 id为什么它显示所有ids如果session pid is 29

2)如何通过两个不同的PID选择多个id?

第1页创建会话PID的地方

$_SESSION['pid']=array();   
$_SESSION['pid'][]= implode (",",$_POST['pid']);

第2页我想在哪里使用选择查询

$pid = join(',',$_SESSION['pid']); 
$result=mysql_query("SELECT id AS wid FROM mywishlist where pid IN (pid)")
while($row=mysql_fetch_array($result)){
    <input type="text" name="wid[]" value="<?php echo $row['wid']//[$j]; ?>" />
<?php  }?>

第3页我想在哪里使用Wid

$max=count($_REQUEST['wid']);
for($a=0; $a<$max; $a++){
    $query = mysql_query("UPDATE mywishlist SET     
        cusername='".$_SESSION['username']."',uid='".$_SESSION['id']."', 
        email='".$email."'  where id='".$_REQUEST['wid'][$a]."'") 
    or die ("Cart Email Query");
}

数据库图像

在此处输入图像描述

Page2 实时图像

在此处输入图像描述

4

2 回答 2

3

问题是您在查询的 where 子句中使用 pid 而不是 $pid。

$result=mysql_query("SELECT id AS wid FROM mywishlist where pid IN ($pid)")
于 2013-04-18T23:06:00.403 回答
1

这个:

$pid = join(',',$_SESSION['pid']); 
$result=mysql_query("SELECT id AS wid FROM mywishlist where pid IN (pid)")

应该:

$pid = join(',',$_SESSION['pid']); 
$result=mysql_query("SELECT id AS wid FROM mywishlist where pid IN ($pid)")

它显示所有结果的原因是因为您在 (pid) 中有 pid....将 pid 作为表中的字段 pid,因此对于第一行的每一行,您都说:

pid value = 25
SELECT id AS wid FROM mywishlist where pid IN (25)
pid value = 26
SELECT id AS wid FROM mywishlist where pid IN (26)

对于所有相同的行...您正在与表中的值 pid 进行比较。

- - - - - - - - - - - - - -更新 - - - - - - - - - - - --------

因为这:

SELECT id AS wid FROM mywishlist where pid IN ($pid) 

如果你回显到 $pid,它应该看起来像,例如:

24,25 

然后你选择应该看起来像:

SELECT id AS wid FROM mywishlist where pid IN (24,25)   

糟糕,如果您使用 mysql_real_scape_string,您的代码应该更安全

"SELECT id AS wid FROM mywishlist where pid IN (".mysql_real_scape_string($pid).")"; 

如果您不知道如何使用输入数组,我添加了这个小提琴:

http://phpfiddle.org/main/code/2fd-p20

--------------------------更新2------------------------ ---------

使用我的小提琴上的这段代码,你有一个输入数组:

<?php
if(isset($_POST['friend']))
{ $arr = array();
 foreach ($_POST['friend'] as $value) {
   if(!empty($value))
$arr[] = $value;
 }

 //here you have you array of values in your session var

 $_SESSION['pid'] = implode(",",$arr);
 }
?>

然后只能这样使用它:

$pid = $_SESSION['pid'];
$result=mysql_query("SELECT id AS wid FROM mywishlist where pid IN (".$pid.")")

PS:不要使用 mysql 扩展...去 mysqli 或 PDO。

于 2013-04-18T23:11:42.597 回答