我需要帮助解决选择查询在哪里IN子句?

时间:2013-04-29 14:29:37

标签: php arrays session select

我需要帮助来解决选择查询的IN子句吗?

1)现在问题是选择查询无法正常工作where pid IN ($pid)
2)第二个问题是CCID input text是空的吗?

当我echo $pid=implode ($new_product).'<br>';PID显示创建的内容为$ _SESSION ['pid'] ..!

使用时出错($ pid)

CCID Problem
You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near ')' at line 1

会话Pid创建的页面

session_start();

$_SESSION['pid1'][]=$_POST['pid'];


function get_id($id){
$result1=mysql_query("select * from products where id='$id'")
or die("Id Problem"."<br/><br/>".mysql_error());
$results1= array();
$k=0; // add the new line
while($row1=mysql_fetch_assoc($result1)){
$results1[$k] =$row1['id'];
$k++;
}
return $results1;
}

$pid1=get_id($id);

<form method="post">

<input type="hidden" name="pid[]" value="<?php echo $pid1?>" />
</form>

使page2.php

session_start();
if(is_array($_SESSION['pid1'])){
$max=count($_SESSION['pid1']);  
for($i=0; $i<$max; $i++){
$new_product=$_SESSION['pid1'][$i];
echo $pid=implode ($new_product).'<br>';
}}

$result=mysql_query("SELECT id AS ccid FROM cart where pid IN ($pid) ") 
or die("CCID Problem"."<br/><br/>".mysql_error());

while($row=mysql_fetch_array($result)){
?>

<input type="text" name="ccid[]" value="<?php echo $row['ccid'];?>" />

<?php }?>

2 个答案:

答案 0 :(得分:3)

  1. 使用echo $pid=implode (",",$new_product).'<br>';

  2. 由于上述问题,
  3. CCID input text为空。

  4. 假设您在会话中有array(1, 2 3)个pid。发生的事情是:

    您使用:

    $pid = implode($new_product);
    

    这将通过连接数组值而不使用任何分隔符来创建字符串。所以你得到:

    $pid = 123

    你需要的是他们之间的逗号。所以你必须使用:

    $pid=implode (",",$new_product);
    

    这里的第一个参数是逗号,它用作粘合剂来保存字符串中的数组值,结果变为:

    $pid=1,2,3;

    您需要在查询中使用IN子句来使用此字符串。

    同时移动获取pid $pid=implode (",",$new_product); 的行 for循环;

答案 1 :(得分:0)

$new_product = array();
for($i=0; $i<$max; $i++){
   $new_product[]=$_SESSION['pid1'][$i];
}
$pid=implode (', ', $new_product);