Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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 使用mysqli将form$\u POST数组插入MySQL数据库_Php_Mysql - Fatal编程技术网

Php 使用mysqli将form$\u POST数组插入MySQL数据库

Php 使用mysqli将form$\u POST数组插入MySQL数据库,php,mysql,Php,Mysql,我有一个$\u POST数组,我正在尝试编写一个插入到MySQL数据库的代码,而不必列出所有字段名 数组是需要插入数据库的单行 该数组如下所示: Array ( [membership_type] => 4 [title] => Mr [first_name] => John [last_name] => Smith [known_as] => John [address_1] => 10 High Street

我有一个$\u POST数组,我正在尝试编写一个插入到MySQL数据库的代码,而不必列出所有字段名

数组是需要插入数据库的单行

该数组如下所示:

Array
(
    [membership_type] => 4
    [title] => Mr
    [first_name] => John
    [last_name] => Smith
    [known_as] => John
    [address_1] => 10 High Street
    [address_2] => Big House
    [address_3] => Big Road
    [address_4] => Chipping Sodbury
    [address_5] => Bristol
    [post_code] => BS37 1AB
    [home_tel] => 01454 123456
    [mobile] => 07777 123456
    [email] => john@email.com
    [confirm_email] => john@email.com
    [day_dob] => 21
    [month_dob] => 09
    [year_dob] => 1974
    [volunteer] => on
    [employment_status] => employed
    [college_nus] => 
    [employment_address] => 50 Station Road
Chipping Sodbury
Bristol
BS37 2CD
    [occupation] => Managerial/Professional
    [employement_email] => john@work.com
    [employement_phone] => 01454 654321
    [terms] => 1
)
为了方便起见,我将表单字段名编码为与数据库中的字段名相对应

非常感谢,


John

您可以使用以下方法:

注意:我使用PDO

首先连接到DB,如:

$connection = new PDO('mysql:host=' . yourHost . ';dbname=' . youDbName . ';charset=utf8', DBUser, Dbpass);

$data=$_POST;
  $bind = ':' . implode(',:', array_keys($data));
        $field = explode(",", $bind);
        $returnQuery = "INSERT INTO `tableName` (" . implode(",", array_keys($data)) . ") VALUES (" . $bind . ") ";
        $bind = $connection ->prepare($returnQuery);
        $bind->execute(array_combine($field, array_values($data)));

希望获得此帮助

您可能需要以下帮助:

<?php
$query = "";
if(isset($_POST)){
    foreach( $_POST as $key => $val ) {
    $query .= " `$key`='$val', ";
    }
$query = preg_replace('/,$/', '', $query); // removes the last comma
}
//$query: `name`='pedro', `email`='stack@stack.com' 

这感觉是个坏主意。如果您只是在字段上迭代并插入用户提供的任何数据,您将如何处理每个字段级别的验证?@MattRaines表单使用的是Foundation数据,因此所有验证都是在提交表单之前完成的。这篇文章可能会帮助您我不知道Foundation,但它是客户端验证。如果您按照此处的任何答案或链接的问题进行操作,您需要绝对确定用户没有提供名为
id)值(1、2、3、4、5,…)的表单字段;落桌学生;——
@smnvhn-我尝试了那篇文章中的代码,但得到了一个致命错误:在回答代码的第4行调用未定义的函数insert_data()错误:insert_data($mysqli,$array,$table_name)@mohshenshakibafar-尝试PDO方法并得到以下错误-致命错误:在…中不在对象上下文中使用$this,我为您解决了这个问题:)@mohshenshakibafar-包含连接字符串,现在得到-致命错误:在…@JohnHiggins中不在对象上下文中使用$this,您确定要复制上面的所有代码并将变量和常量更改为数据库吗?(例如:您的主机必须更改为localhost或…@mohshenshakibafar-这是我正在使用的连接字符串:$connection=new-PDO('mysql:host=10.10.10.10;dbname=database',user,password);