如何使用PHP将$\u POST数组插入MySQL表
我正在尝试将以下$\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-
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