【问题标题】:Creating Array not working as I thought创建数组不像我想的那样工作
【发布时间】:2015-04-08 20:25:54
【问题描述】:

我对数组感到非常困惑,我希望有人可以帮助我。

我正在尝试将用户选择的各种图片存储在 mysql 数据库中(一次最多可以选择 3 张图片)。这些选择实际上是每张图片下方的复选框,我想将这些选择作为 $pic_id 存储在一个数组中。

选择存储在我的数据库中,但似乎没有像我预期的那样为它们分配键,我似乎无法使用它们。

我希望能够使用图片 ID 来显示所做的选择。

这是我的结果: [7] => 11,6 [8] => 9,8

但我需要单独了解这些变量。 我希望这样: [7] => 11, [8] =>6, [8] => 9, [9] => 8

形式:

 <form action="insert.php" method="GET">
    <?php
    <input type=\"checkbox\" name=\"pic_id[]\" value=".$row['id'].">
    <input type="submit" name="submit" value="Add" />
    ?>

插入.php

$checkBox = implode(',', $_GET['pic_id']);
if (isset($_GET['submit'])) {
$sql="INSERT INTO pics (pic_id) VALUES ('" . $checkBox . "')"; 

打印数组

<?php
    $sql="SELECT * FROM pics";
    $query = mysqli_query($conn, $sql);
    $myArray = Array();
    while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
    $myArray[]=$row['pic_id'];  
    }
 print_r($myArray);
?>

见上面的结果。

【问题讨论】:

  • 未选中的复选框将不会被发送,因此 pic_id[] 应该是 pic['.$row['id'].'] ...

标签: php arrays mysqli


【解决方案1】:

只需在插入数据库时​​将值分开,就像将它们连接起来一样。然后循环遍历结果并将它们添加到您的数组中。

<?php
    $sql="SELECT * FROM pics";
    $query = mysqli_query($conn, $sql);
    $myArray = array();
    while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
        foreach(explode(',', $row['pic_id']) as $id) {
            $myArray[]= $id;  
        }
    }
 print_r($myArray);
?>

【讨论】:

  • 嗯,我在 while(explode(',', $row['pic_id']) as $id) 遇到语法错误
  • 我得到的错误是` PHP Parse error: syntax error, unexpected T_AS on line 11. Line 11 is this one while(explode(',', $row['pic_id']) as $id ) {`
  • 啊。固定的。立即尝试。
  • 谢谢,但现在我在第 6 行的代码中得到了 T_DOUBLE_ARROW)。
  • 我写这段代码的时候一定是喝醉了。 :/ 试试我的新代码。
猜你喜欢
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
相关资源
最近更新 更多