2013-04-29 75 views
0

我需要幫助解決選擇查詢where IN子句?我需要幫助解決選擇查詢哪裏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 }?> 
+0

使用IN語句在其中聲明SE​​LECT語句。它在數據庫中運行時是否工作? mysql_error的錯誤是什麼意思? – andrewsi 2013-04-29 14:32:29

+0

@andrewsi在'input type text name ccid'中沒有顯示'ccid'? – 2013-04-29 14:34:54

+0

這是因爲您的查詢失敗。迴應您正在生成的查詢。在數據庫中運行它。 – andrewsi 2013-04-29 14:37:02

回答

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

  2. CCID input text是空的,因爲上面的問題。

假設您在會話中有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環路;

+0

它可能承認澄清,沒有膠水參數的'implode'默認爲空字符串。 – 2013-04-29 14:41:56

+1

+1。我試圖讓他爲自己工作:) – andrewsi 2013-04-29 14:42:12

+0

這就是我,踏上教學時刻。 – 2013-04-29 14:43:03

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