“Array”一词不断出现在我的数据库中

时间:2013-07-29 16:28:28

标签: php database arrays checkbox

我在数据库中不断收到“Array”这个词。我的表单中有复选框,并且很难处理它。我尝试了不同的东西,这是我最新的编码。我究竟做错了什么?

在我的表单中,复选框的名称为“cats []”。

我不知道第一部分是否重要(我在网上看到并尝试使用它以防万一)

if(count($cats) > 0)
{
 $str = implode(",", $cats);
}

然后是实际的代码

$cats = array();

    // Not good?
    //if(isset($_POST['submit']))
    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        if(isset($_POST['cats']))
        {
            $cats = $_POST['cats'];
        }
        $categories= $_POST['categories'];

        // This saves it aa a string, as you can only save those values as string.
        $str = $categories . ": " . implode(", ", $cats);
        var_dump ($str);
    }

这是数据库

$sql="INSERT INTO form_corpo_test (compagnie)
VALUES
('$_POST[cats]')";

修改

这是正确的代码(谢谢你的帮助!我希望我能将你的两个答案标记为“最佳答案”)。希望这有助于其他人(错误,虽然他们当然也需要查看sql注入)。

$cats = array();
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST['cats'])) {
$cats = implode(",", $_POST['cats'] );
}
$categories= $_POST['categories'];
$str = $categories . ": " . $cats;
}

    $sql="INSERT INTO form_corpo_test (categories)
    VALUES
    ('$str')";

5 个答案:

答案 0 :(得分:2)

如果$ cats是一个空数组,它仍然是一个数组。情况可能就是这样。

因此,您要插入一个空数组,该数组已连接到数据库中的字符串。将数组转换为字符串时,sting将包含单词Array。

示例:

$var = new Array();
echo $var;

输出: Array

正如其他人评论的那样:您可能打算插入$str,而不是$_POST['cats']

答案 1 :(得分:2)

这应该生成用户输入的所有猫的逗号分隔列表,以添加到该类别。 作为其被称为类别,这是否意味着它也是一个数组??

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    if(isset($_POST['cats'])) {
        $cats = implode(",", $_POST['cats'] );
    }
    $categories= $_POST['categories'];

    $str = $categories . ": " . $cats;
    echo $str;
}

答案 2 :(得分:0)

将此编码用于您的数据库

$sql="INSERT INTO form_corpo_test (compagnie)
VALUES
('$str')";

答案 3 :(得分:0)

您在数据库中存储类别的想法是错误的。

永远不要在数据库列中存储以逗号分隔的值,而是创建另一个表来存储链接到帖子的类别。这就是数据库的工作方式。

答案 4 :(得分:-1)

有几件不同的事情:

如果您尝试插入连接字符串,$ str:

您正在将$ _POST ['cats']插入数据库,您应该在其中插入$ str - 您正在构建的字符串。

如果您要插入每个$ cat:

您将需要多个数据库查询。尝试:

    foreach($cats as $category){
        $sql="INSERT INTO form_corpo_test (compagnie)
              VALUES
              (?)";
        //execute query in a prepared statement here
    }