数组到字符串转换错误php sql

时间:2014-05-15 14:28:56

标签: php html sql arrays

数组来自此表单(选择框)。

<?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来自表单/数组(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>

我收到错误消息“注意:第17行的C:\ xampp \ htdocs \ pro \ calculatepage.php中的数组到字符串转换”

我先用foreach和print_r测试了它。它确实显示了数值。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您不能将数组包含在字符串中。所以,

$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) . ") ";

答案 1 :(得分:0)

错误地写入了Select查询。如果复选框输入有一个id数组,那么select查询中的条件运算符将是&#39; IN&#39;而不是&#39; =&#39;。