Php “一词;数组";一直出现在我的数据库中

Php “一词;数组";一直出现在我的数据库中,php,database,arrays,checkbox,Php,Database,Arrays,Checkbox,我一直在数据库中找到“数组”这个词。我的表格中有复选框,我很难处理它。我尝试过不同的东西,这是我最新的编码。我做错了什么 在我的表单中,复选框的名称为“cats[]” 我不知道第一部分是否重要(我在网上看到了这一点,并尝试将其与其他部分一起使用,以防万一) 然后是实际代码 $cats = array(); // Not good? //if(isset($_POST['submit'])) if($_SERVER['REQUEST_METHOD'] == 'POST')

我一直在数据库中找到“数组”这个词。我的表格中有复选框,我很难处理它。我尝试过不同的东西,这是我最新的编码。我做错了什么

在我的表单中,复选框的名称为“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是一个空数组,它仍然是一个数组。情况可能就是这样

因此,您将在数据库中插入一个与字符串合并的空数组。将数组强制转换为字符串时,sting将包含单词数组

例如:

$var = new Array();
echo $var;
产出:
数组


正如其他人所评论的:您可能打算插入
$str
,而不是
$\u POST['cats']

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

因此,您将在数据库中插入一个与字符串合并的空数组。将数组强制转换为字符串时,sting将包含单词数组

例如:

$var = new Array();
echo $var;
产出:
数组


正如其他人所评论的:您可能打算插入
$str
,而不是
$\u POST['cats']

为您的数据库使用此编码

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

为您的数据库使用此编码

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

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

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

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

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

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

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

两件不同的事情:

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

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

如果您试图插入每个$cat:

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

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

两件不同的事情:

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

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

如果您试图插入每个$cat:

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

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

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


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

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



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

您正在尝试将数组存储到数据库中。在存储它之前,您需要将其转换为字符串或序列化数组,就像您应该插入
$str
,而不是
$\u POST['cats']
$\u POST[cats]是一个数组一样。不想在数据库中插入
$str
?除了这个问题之外,请仔细阅读……从外观上看,您还可以直接在数据库中写入
$\u POST
字段。这是非常不安全的。您正在尝试将数组存储到数据库中。在存储它之前,您需要将其转换为字符串或序列化数组,就像您应该插入
$str
,而不是
$\u POST['cats']
$\u POST[cats]是一个数组一样。不想在数据库中插入
$str
?除了这个问题之外,请仔细阅读……从外观上看,您还可以直接在数据库中写入
$\u POST
字段。这很不安全,谢谢。我没有意识到我犯的错误。现在,我知道了谢谢你。我没有意识到我犯的错误。现在,我知道了请解释一下(不要讽刺)。我还不太熟悉数据库/php类型。还有什么资源可以让我查到吗?还有,为什么这是错误的?(没有讽刺)为什么错了。为了说明难度方面,假设您需要查询表以查找包含所有这些类别的记录(
A
C
F
)-您将如何在SQL中执行此操作?请进行解释(无讽刺)。我还不太熟悉数据库/php类型。还有什么资源可以让我查到吗?还有,为什么这是错误的?(没有讽刺)为什么错了。为了说明困难的方面,假设您需要查询表以查找包含所有这些类别的记录(
A
C
F
)-您将如何在SQL中执行此操作?这不起作用(在我的情况下不起作用)。有效的是“$str”。谢谢你的发帖:)这帮了大忙!这会引入SQL注入攻击漏洞,不建议将数据插入数据库。是的,在插入之前,应使用mysql\u real\u escape\u string函数对$str变量进行清理,因为该函数不起作用(在我的情况下不是这样)。有效的是“$str”。谢谢你的发帖:)这帮了大忙!这会引入SQL注入攻击漏洞,不建议将数据插入数据库。是的,在使用mysql\u real\u escape\u string函数插入之前,it$str变量应该进行清理谢谢您的帖子,非常感谢!然而,这并不奏效。然而,有人提出了另一个有效的解决方案:)这引入了SQL注入攻击漏洞,不应该是向数据库中插入数据的推荐方法。对不起,我本该知道的。我编辑了我的帖子,虽然现在有点模棱两可。谢谢你的帖子,非常感谢!然而,这并不奏效。然而,有些人有另一种解决办法