提交表单时显示语法错误

时间:2018-09-28 17:21:21

标签: php mysql

我有一个名为position的表单,其action =“ pos_insert.php”。这是代码

<?php
//error_reporting(0); // avoid notice
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="collegevoting"; // Database name
$tbl_name="position"; // Table name
// Connect to server and select database.
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Get values from form
$id=$_POST['id'];
$org=$_POST['org'];
$position=$_POST['position'];

// Insert data into mysql
$sql1="INSERT INTO $tbl_name(id,org,position)VALUES('$id','$org','$position')";
$result1=mysql_query($sql1);

// if successfully insert data into database, displays message "Successful".
if($result1){
echo '<script>';
echo 'alert("Record successfully inserted")';
echo '</script>';
header('Refresh:0;url=Add_position.php');
}
else {
echo '<script>';
echo 'alert("Record Not successfully inserted")';
echo '</script>';
//exit();
header('Refresh:0;url=Add_position.php');
die('Error: ' . mysql_error($con));
}
?>

<?php
// close connection
mysql_close();
?>

每当我提交表格时,它就会显示 您的SQL语法有误;检查与您的MySql服务器版本相对应的手册以获取正确的语法,以在第1行的'position(id,org,position)VALUES('','AASU','')附近使用

1 个答案:

答案 0 :(得分:0)

如果直接将POST变量直接构建到SQL命令字符串中,而没有处理转义,可能的SQL注入攻击以及可能发生的其他不良情况,直接在请求中使用POST vars是非常危险的。

使用参数化的SQL调用,其中POST变量用作参数(因此可以正确地进行转义和处理,而不必担心注入攻击),可以保护您免受简单的注入攻击。