Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP复选框数组输入";数组";进入MySQL数据库_Php_Mysql - Fatal编程技术网

PHP复选框数组输入";数组";进入MySQL数据库

PHP复选框数组输入";数组";进入MySQL数据库,php,mysql,Php,Mysql,在几个Stack Overflow成员的指导下,我得到了一个与MySQL数据库通信的PHP表单。现在,我正在使用一个数组作为我的复选框,并且信息确实会进入MySQL表…有点 下面的代码将所有记录插入数据库,但复选框对应的列的值为“Array”,而不是指定的值…: <?php function renderForm($articletitle, $articleorganization, $articledate, $articleurl, $articletags ) { ?

在几个Stack Overflow成员的指导下,我得到了一个与MySQL数据库通信的PHP表单。现在,我正在使用一个数组作为我的复选框,并且信息确实会进入MySQL表…有点

下面的代码将所有记录插入数据库,但复选框对应的列的值为“Array”,而不是指定的值…:

<?php
 function renderForm($articletitle, $articleorganization, $articledate, $articleurl,     $articletags )
 {
 ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="style.css">
  </head>
  <body>
    <div id="stylized" class="myform">
      <form id="form" name="form" action="" method="post">
. . .
          <input type="checkbox" name="articletags[]" value="checkbox" id="articletags_0" />
          <input type="checkbox" name="articletags[]" value="checkbox 2" id="articletags_1" />
. . .
        <footer><input type="submit" name="submit" value="Add this Article"></footer></form>
    </div>
  </body>
</html><?php 
 }
. . .

 if(count($articletags) > 0)
{
 $articletags_string = implode(",", $articletags);
}

 if (isset($_POST['submit']))
 { 
 $articletitle = mysql_real_escape_string(htmlspecialchars($_POST['articletitle']));
 $articleorganization = mysql_real_escape_string(htmlspecialchars($_POST['articleorganization']));
 $articledate = mysql_real_escape_string(htmlspecialchars($_POST['articledate']));
 $articleurl = mysql_real_escape_string(htmlspecialchars($_POST['articleurl']));
 $articletags = ($_POST['articletags']);

. . .
 mysql_query("INSERT articles SET articletitle='$articletitle',     articleorganization='$articleorganization', articledate='$articledate',     articleurl='$articleurl', articletags='$articletags' ")
 or die(mysql_error()); 


 header("Location:addsuccess.html"); 
 }
 }
 else

 {
 renderForm('','','','');
 }
?>

. . .
. . .

因为
$\u POST['articletags']
是一个数组,所以在保存到表之前必须将其转换为字符串。替换此行:

$articletags = ($_POST['articletags']);
为此:

$articletags = implode(',', $_POST['articletags']);

由于
$\u POST['articletags']
是一个数组,因此在保存到表之前必须将其转换为字符串。替换此行:

$articletags = ($_POST['articletags']);
为此:

$articletags = implode(',', $_POST['articletags']);

是的,您正在将数组值传递给数据库字段。为此,您必须执行一些转换方法

你可以用几种方法做这件事。 首先,可以将数组值转换为字符串

$articletags = implode(',', $_POST['articletags']);

其次,您可以将数组值转换为json格式,然后您可以在数据库中输入..

是的,您正在将数组值传递到数据库字段..为此,您必须执行一些转换方法

你可以用几种方法做这件事。 首先,可以将数组值转换为字符串

$articletags = implode(',', $_POST['articletags']);

其次,您可以将数组值转换为json格式,然后输入数据库。

好的,我现在就讲这个,下面是我的想法

由于您有多对多关系,因此最好的方法是有三个表,让我们称它们为“main_table”、“tag_table”和“key_table”。如果我没弄错的话,这将给你3级标准化

将复选框的值放入数组中。当你上传信息时,首先将其他数据上传到“main_table”——不用担心你的标签。然后获取刚刚上载的主_表行的ID号

现在,在“tags”数组上使用foreach操作符,并生成一个字符串值以进入INSERT to key_表值$string

我认为这至少是一种正确的方法,当然是从MySQL的角度来看。下面是我刚刚编写和测试的一些基本代码。在错误、安全性等方面,有许多小细节缺失

这是表格,将从数据库下载并填写表格。(``它确实包含一个自动值(checked='checked'),以便在出现问题时不会删除表单。)

这将为您提供一个整洁的规范化数据库。请注意,我们使用PHP函数substr()将要插入的值列表的最后一个逗号去掉

因此,如果您有一个标记表,它有三行两列,比如说,1个红色,2个蓝色,3个绿色,并且您的用户选中了红色和绿色,并且主插入的主表中的id号是18,那么查询($q2)将为:


在key_表(id_main,id_tag_table)中插入值('18','1'),('18','3')

好的,我现在就讲这个,下面是我的想法

由于您有多对多关系,因此最好的方法是有三个表,让我们称它们为“main_table”、“tag_table”和“key_table”。如果我没弄错的话,这将给你3级标准化

将复选框的值放入数组中。当你上传信息时,首先将其他数据上传到“main_table”——不用担心你的标签。然后获取刚刚上载的主_表行的ID号

现在,在“tags”数组上使用foreach操作符,并生成一个字符串值以进入INSERT to key_表值$string

我认为这至少是一种正确的方法,当然是从MySQL的角度来看。下面是我刚刚编写和测试的一些基本代码。在错误、安全性等方面,有许多小细节缺失

这是表格,将从数据库下载并填写表格。(``它确实包含一个自动值(checked='checked'),以便在出现问题时不会删除表单。)

这将为您提供一个整洁的规范化数据库。请注意,我们使用PHP函数substr()将要插入的值列表的最后一个逗号去掉

因此,如果您有一个标记表,它有三行两列,比如说,1个红色,2个蓝色,3个绿色,并且您的用户选中了红色和绿色,并且主插入的主表中的id号是18,那么查询($q2)将为:


将值('18','1'),('18','3')插入键\u表(id\u main,id\u tag\u table)

在一个重要的旁注上,您应该替换此行。。。if(isset($\u POST['submit'])…使用此行:if($\u SERVER['REQUEST\u METHOD']==''POST')当前,您只是检查是否单击了按钮。当有人在您的表单中按enter键时,您的逻辑将失败。感谢您捕捉到132911。很棒的眼睛。在一个重要的方面,你应该替换这一行。。。if(isset($\u POST['submit'])…使用此行:if($\u SERVER['REQUEST\u METHOD']==''POST')当前,您只是检查是否单击了按钮。当有人在您的表单中按enter键时,您的逻辑将失败。感谢您捕捉到132911。令人敬畏的眼睛。