Php “一词;数组";一直出现在我的数据库中
我一直在数据库中找到“数组”这个词。我的表格中有复选框,我很难处理它。我尝试过不同的东西,这是我最新的编码。我做错了什么 在我的表单中,复选框的名称为“cats[]” 我不知道第一部分是否重要(我在网上看到了这一点,并尝试将其与其他部分一起使用,以防万一) 然后是实际代码Php “一词;数组";一直出现在我的数据库中,php,database,arrays,checkbox,Php,Database,Arrays,Checkbox,我一直在数据库中找到“数组”这个词。我的表格中有复选框,我很难处理它。我尝试过不同的东西,这是我最新的编码。我做错了什么 在我的表单中,复选框的名称为“cats[]” 我不知道第一部分是否重要(我在网上看到了这一点,并尝试将其与其他部分一起使用,以防万一) 然后是实际代码 $cats = array(); // Not good? //if(isset($_POST['submit'])) if($_SERVER['REQUEST_METHOD'] == 'POST')
$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注入攻击漏洞,不应该是向数据库中插入数据的推荐方法。对不起,我本该知道的。我编辑了我的帖子,虽然现在有点模棱两可。谢谢你的帖子,非常感谢!然而,这并不奏效。然而,有些人有另一种解决办法