如何使用PHP将$_POST数组插入MySQL表中


How to insert a $_POST array into a MySQL table using PHP

我正在尝试将以下$_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);
?>

以下是echo $sql:的输出

INSERT INTO `trainers`(name, number, date_of_birth, address, email,
gender, salary, date_of_join, degree_of_learning) VALUES ('asd', '2',
'2008-06-17', 'asd', 'asd@gmail.com', 'male', '22212', '2015-04-08',
'bechelore degree ');

我试着直接在服务器上插入它,它成功了,但在我的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; 

您需要一个链接才能发送查询。您还必须从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

更改此行

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

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