Php 如何将数组数据从表单发布到mysql数据库
请原谅我的天真…我不是程序员!我已经花了4天的大部分时间在这上面,我已经准备好接受PHP课程或强化治疗 场景:数据库内置mySQL。表中包含除ID和age之外的所有列varchar(50)-均为INT。请参见下文,我只需要在链接列/字段的复选框中输入“是”值 我想用一个既有文本框又有复选框的表单插入数据。我认为最好的方法是php数组 表格:Php 如何将数组数据从表单发布到mysql数据库,php,mysql,arrays,post,checkbox,Php,Mysql,Arrays,Post,Checkbox,请原谅我的天真…我不是程序员!我已经花了4天的大部分时间在这上面,我已经准备好接受PHP课程或强化治疗 场景:数据库内置mySQL。表中包含除ID和age之外的所有列varchar(50)-均为INT。请参见下文,我只需要在链接列/字段的复选框中输入“是”值 我想用一个既有文本框又有复选框的表单插入数据。我认为最好的方法是php数组 表格: 孩子名 年龄 父名称 联系电话 主题 划痕 应用程序发明家 HTML 参加的会议 2012年11月 2012年12月 PHP脚
孩子名
年龄
父名称
联系电话
主题
划痕
应用程序发明家
HTML
参加的会议
2012年11月
2012年12月
PHP脚本:
<?php
include("config.php");
$childrecord = array("childname","age","parent_name","contact_no","scratch","app_inventor","html");
if(isset($_POST['childrecord'])){
$childrecord = $_POST['childrecord'];
$i = 0;
foreach ($childrecord as $key => $value); {
$i++;
$sql="INSERT INTO tblchildren (childrecord) VALUES ($_POST['childrecord'])";
mysql_query($sql);
}
?>
您希望在代码中存储表单数据
为此,您必须在代码和数据库中进行以下更改
形式上
因此,您需要修改process.php
在修改表的结构之前,请执行以下步骤
1. Delete your existing table
2. Create new table
DROP TABLE tblchildren ;
CREATE TABLE tblchildren
(
id INT AUTO_INCREMENT PRIMARY KEY,
childname VARCHAR(30),
age TINYINT,
parent_name VARCHAR(30),
contact_no VARCHAR(20),
scratch ENUM('yes','no'),
app_inventor ENUM('yes','no'),
html ENUM('yes','no'),
sesNov12Attnd ENUM('yes','no'),
sesDec12Attnd ENUM('yes','no')
);
由于您是php新手,所以我使用了基本函数,
我建议您使用从mysql切换到mysqli
process.php
你的问题/你的问题是什么?显然PHP不起作用。我只学到了一小部分,不知道这个论坛是程序员(@Rajeev)的。我曾尝试使用isset作为复选框,但我在表单中没有选中的那些地方得到了未定义的索引,所以我想,但是我把数组语法搞错了,我想…@user2550346这个网站不是程序员所有的,而是由程序员主持的。非常感谢-到目前为止,在提交表单时遇到了这个错误:你的SQL语法有一个错误;检查与MySQL服务器版本对应的手册,以了解第2行“,,no,no,yes,no,no)”附近使用的正确语法。我正在使用MySQL版本5.5.27运行XAMPP…您需要将查询修改为:-$sql=“插入tblchildren(childname、age、parent_name、contact_no、scratch、app_inventor、html、sesNov12Attnd、sesDec12Attnd)值(“$childname”、$age、$parentName'、$contactNo'、$scratch'、$appInventor'、$html'、$nov12'、$dec12');为什么要使用enum?使用一点(1)或一点(1)如果还有其他问题,请告诉我。@mc_fish,enum的性能更好。有关更多详细信息,请查看:-
note: Input field value should be relevant.
With your existing html code your process.php will get data in this structure
Array
(
[textfield] => Array
(
[childname] => dang
[age] => 18
[parent_name] => doctor
[contact_no] => 100
)
[checkbox] => Array
(
[scratch] => checkbox
[app_inventor] => checkbox
[html] => checkbox
[nov12] => checkbox
[dec12] => checkbox
)
[Submit] => Submit
)
1. Delete your existing table
2. Create new table
DROP TABLE tblchildren ;
CREATE TABLE tblchildren
(
id INT AUTO_INCREMENT PRIMARY KEY,
childname VARCHAR(30),
age TINYINT,
parent_name VARCHAR(30),
contact_no VARCHAR(20),
scratch ENUM('yes','no'),
app_inventor ENUM('yes','no'),
html ENUM('yes','no'),
sesNov12Attnd ENUM('yes','no'),
sesDec12Attnd ENUM('yes','no')
);
<?php
$con=mysql_connect("hostname","username","pass");
$db=mysql_select_db('dbname', $con);
//check form is submitted
if(isset($_POST)){
//mysql_real_escape_string() prevents from sql injection.
$childname= mysql_real_escape_string($_POST['textfield']['childname']);
$age=mysql_real_escape_string($_POST['textfield']['age']);
$parentName=mysql_real_escape_string($_POST['textfield']['parent_name']);
$contactNo=mysql_real_escape_string($_POST['textfield']['contact_no']);
$scratch=isset($_POST['checkbox']['scratch'])?'yes':'no';
$appInventor=isset($_POST['checkbox']['app_inventor'])?'yes':'no';
$html=isset($_POST['checkbox']['html'])?'yes':'no';
$nov12=isset($_POST['checkbox']['nov12'])?'yes':'no';
$dec12=isset($_POST['checkbox']['dec12'])?'yes':'no';
$sql="INSERT INTO tblchildren(childname, age, parent_name, contact_no, scratch,app_inventor,html, sesNov12Attnd, sesDec12Attnd )
VALUES
('$childname',$age,'$parentName','$contactNo','$scratch','$appInventor','$html','$nov12','$dec12')";
mysql_query($sql);
}else{
echo "Form Not SUbmitted";
}
?>