我在数据库中不断收到“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')";
答案 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
}