2012-09-07 82 views
-2

html页面:POST_不插入到MySQL

<input size="100" value="Error Message" name="error" id="error"></td> 

insert.php:

$error=$_POST['$error']; 

$sql="INSERT INTO $tbl_name(a, z, error, y, z) 
     VALUES('$a','$z','$error','$y','$x')"; 
$result=mysql_query($sql); 

但是,SQL结果:

# mysql db_db -e "select * from tickets;" 
+---+---+-----------+---------+--------------+ 
| a | z | error  | y  | x   | 
+---+---+-----------+---------+--------------+ 
| a | z |   | y  | x   | 
+---+---+-----------+---------+--------------+ 

缺少什么我在这里? 抱歉格式化。

+2

你不是[转义任何SQL](http://bobby-tables.com/php),使用陈旧而危险的'mysql_query',并且你还没有使用任何代码格式(缩进四个空间),所以这里缺少很多东西。 – tadman

+0

作为参考,考虑使用'$ error = mysql_real_escape_string($ _ POST ['error']);'而不是你在做什么。它更**更安全。 – David

+0

你为什么还原编辑? – David

回答

4

$_POST['$error'];应该是$_POST['error'];。那里有一个额外的$角色。

-3

试试这个:

include (your_db_connection.php); 

$a = $_POST['a']; 
$z = $_POST['z']; 
$error = $_POST['error']; 
$y = $_POST['y']; 

$query = "INSERT INTO your_table_name(a,z,error,y) VALUES('$a', '$z', '$error', '$y')"; 
$result = mysql_query($query); 

echo "Insert record success."; 

如果我看到你的代码,你有一个重复的列。请参阅“z”栏。

+2

如果你拿$ _POST值并直接在MySQL查询中使用它们而不逃避,那么[你会得到你的数据库被黑](http://bobby-tables.com/)。你必须使用[mysql_real_escape_string](http://php.net/mysql_real_escape_string) – Jocelyn

+0

我的意思是,在这个函数代码之前,我认为这将有一个输入形式的权利。 –

+1

X-men了解'PDO'和'prepared statements'。您的代码可能存在漏洞。 – fyz