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

如何使用PHP将$\u POST数组插入MySQL表

如何使用PHP将$\u POST数组插入MySQL表,php,mysql,Php,Mysql,我正在尝试将以下$\u POST数组插入MySQL表: Array ( [name] => asd [number] => 2 [date_of_birth] => 2008-06-17 [address] => asd [email] => asd@gmail.com [gender] => male [salary] => 22212 [date_of_join] => 2015-

我正在尝试将以下$\u POST数组插入MySQL表:

Array (
    [name] => asd
    [number] => 2
    [date_of_birth] => 2008-06-17
    [address] => asd
    [email] => asd@gmail.com
    [gender] => male
    [salary] => 22212
    [date_of_join] => 2015-04-08
    [degree_of_learning] => bechelore degree
)
我尝试使用此代码,但未收到任何错误,但数组未插入到我的表中:

<?php
    include('db.php');

    $columns = implode(", ",array_keys($_POST));
    $escaped_values = array_map('mysql_real_escape_string', array_values($_POST));
    $values  = implode("', '", $escaped_values);
    $sql = "INSERT INTO `trainers`($columns) VALUES ('$values');";
    echo $sql;
    mysql_query($sql);
?>
我尝试直接在服务器上插入它,但在我的PHP代码中不起作用

我的表格定义是:

CREATE TABLE IF NOT EXISTS trainers (
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(255) NOT NULL,
    number varchar(255) NOT NULL,
    date_of_birth date NOT NULL,
    address varchar(255) NOT NULL,
    email varchar(255) NOT NULL,
    gender varchar(255) NOT NULL,
    salary int(11) NOT NULL,
    date_of_join date NOT NULL,
    degree_of_learning varchar(255) NOT NULL,
    PRIMARY KEY (id)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2; 
换行

 $values  = implode("', '", $escaped_values);


您需要一个链接才能发送查询。您还必须从SQL字符串中转义,以便可以调用php变量。这可能无法完全解决您的问题,但这肯定会让您走上正确的轨道

<?php
  include('db.php');//is your db.php creating a link to the database?
  /*I would use something along these lines.

  $link = mysqli_connect("localhost", "dbuser", "dbpassword", "dbname");

  if (mysqli_connect_error()) {
    die ("There was an error connecting to the database");
  } */

  $columns = implode(",",array_keys($_POST));
    $values  = implode("','", array_values($_POST));
    $query = "INSERT INTO `Table Name`(".mysqli_real_escape_string($link, $columns).") VALUES ('".mysqli_real_escape_string($link, $values)."')";//insert your table name here
    echo $query; 
    mysqli_query($link, $query);//added the $link here

将所有POST变量盲目地插入数据库可能被认为是危险的。您尝试过使用准备好的语句吗?我没有收到任何错误,但它没有插入到我的tableArray([name]=>asd[number]=>2[出生日期]=>2008-06-17[地址]=>asd[email]=>asd@gmail.com【性别】=>男性【工资】=>22212【入职日期】=>2015-04-08【学习学位】=>bechelore学位)此my$\u POST Array是否可以发送您的表结构?如果不存在,请创建表
trainers
id
int(11)NOT NULL自动递增,
name
varchar(255)NOT NULL,
number
varchar(255)NOT NULL,
date\u出生日期
date NOT NULL,
address
varchar 255)不为空,
email
varchar(255)不为空,
gender
varchar(255)不为空,
salary
int(11)不为空,
date\u加入日期不为空,
degree\u学习
varchar(255)不为空,主键(
id
)引擎=InnoDB默认字符集=utf8自动递增=2;mysql_查询的参数是向后的,但如果在任何情况下未指定,它将使用上次打开的连接,因此可能不是问题所在。
$values  = implode("','", $escaped_values);
<?php
  include('db.php');//is your db.php creating a link to the database?
  /*I would use something along these lines.

  $link = mysqli_connect("localhost", "dbuser", "dbpassword", "dbname");

  if (mysqli_connect_error()) {
    die ("There was an error connecting to the database");
  } */

  $columns = implode(",",array_keys($_POST));
    $values  = implode("','", array_values($_POST));
    $query = "INSERT INTO `Table Name`(".mysqli_real_escape_string($link, $columns).") VALUES ('".mysqli_real_escape_string($link, $values)."')";//insert your table name here
    echo $query; 
    mysqli_query($link, $query);//added the $link here