Phpmyadmin MySQL语法

时间:2015-05-19 03:24:09

标签: php sql forms

如果像这样的值:' s-Gravenhage 会提交到我的数据库

然后表单未提交,我看到一个错误:

错误:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在' s-Gravenhage附近使用''''''',' ;','',' 0',' 0',' 0','' ,'','','',' 19.05。'在第2行

没有的其他值: - ' 都没问题!

我认为这是因为'和 -

我如何在phpmyadmin中修复此问题?

所以这是send.php(对于动作表单)

$link = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
die('Could not connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db(DB_NAME, $link); 

if (!$db_selected) { 
die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
} 



$value = $_POST['firstname']; 
$value2 = $_POST['lastname']; 
$value3 = $_POST['city']; 


$sql = "INSERT INTO orders (firstname, lastname, city)
VALUES ('$value', '$value2', '$value3'')";



if (!mysql_query($sql)) { 
die('Error: ' . mysql_error());

1 个答案:

答案 0 :(得分:0)

请参阅下面的修订代码。在查询中使用之前,每个输入都需要进行清理。这也是出于安全原因。在此处详细了解https://www.owasp.org/index.php/SQL_Injection

$link = mysql_connect (DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db(DB_NAME, $link); 

if (!$db_selected) { 
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
} 

$value = mysql_real_escape_string($_POST['firstname']); 
$value2 = mysql_real_escape_string($_POST['lastname']); 
$value3 = mysql_real_escape_string($_POST['city']); 

$sql = "INSERT INTO orders (firstname, lastname, city) VALUES ('$value', '$value2', '$value3')";

if (!mysql_query($sql)) { 
    die('Error: ' . mysql_error());
}