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