2014-05-15 65 views
-2

數組從這個表單中獲得(Select Boxes)。數組到字符串的轉換錯誤php sql

<?php session_start();?> 
<?php require("Connections/Project.php"); ?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 
<?php 
     $sql_s="SELECT * FROM t_dvd_copy"; 
     $query_s=mysql_query($sql_s); 
?> 
<body> 
    <?php 
     $sql="SELECT *, dvd_title FROM t_dvd_copy INNER JOIN t_dvd ORDER BY dvd_title ASC"; 
     $query=mysql_query($sql); 

     while($row=mysql_fetch_array($query)) { 

?> 
<form action="calculatepage.php" method="post"> 
<table width="200" border="1"> 
    <tr> 
    <td><?php echo $row['dvd_copy_id']?></td> 
    <td><?php echo $row['dvd_title']?></td> 
    <td><?php echo $row['price']?></td> 
    <td><input type="checkbox" value="<?php echo $row['dvd_copy_id']?>" name="checkbox[]"></td> 
    </tr> 
</table> 

<p> 

    <?php 
     } 
    ?> 
     <input type="submit" name="button" id="button" value="Submit" /> 
    </form> 
</p> 
</body> 
</html> 

我想使用從形式得到了陣列來顯示它在SQL表,其中ID(s)爲從表單/陣列(calculatepage.php)

<?php include("Connections/Project.php");?> 
<?php session_start();?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Calculate</title> 
</head> 
<body> 
<table> 
<tr> 
<?php 
$ide=$_POST['checkbox']; 

$sql="select * from t_dvd_copy where dvd_copy_id='$ide'"; 

$result = mysql_query($sql); 
while($row = mysql_fetch_array($result)) { 
echo $row['dvd_copy_id']; 
} 
?> 

</body> 
</html> 

我錯誤消息「注意:數組到字符串轉換在C:\ xampp \ htdocs \ pro \ calculatepage.php在第17行」

我先用foreach和print_r測試它。它確實顯示數字值。

我該如何解決這個問題?

+4

'$ ide'是一個數組,你不能簡單地將它插入到一個字符串中。 – deceze

+0

您的表單傳遞的複選框變量是一個數組;你不能在SQL語句中插入那個無用的信息 – WillardSolutions

+0

你能給我一些建議嗎? – Escii

回答

1

您不能將數組包含到字符串中。所以,

$sql = "select * from t_dvd_copy where dvd_copy_id = '$ide' "; 

是不可能的,並會給你一個錯誤。

相反,您可能需要檢查您的$ide數組以查看內部內容,並使用正確的元素。也許使用implode()並改變條件IN代替=

$sql = "select * from t_dvd_copy where dvd_copy_id IN (" . implode(',', $ide) . ") "; 
0

選擇查詢是錯誤地written.If的複選框輸入由具有ID的在選擇查詢的陣列則條件操作者將「IN」而不是'='。