【问题标题】:Phpmyadmin MySQL Syntax [closed]Phpmyadmin MySQL 语法 [关闭]
【发布时间】:2015-07-30 17:24:13
【问题描述】:

如果像这样的值:'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());

【问题讨论】:

  • 您需要转义您的输入。见这里stackoverflow.com/questions/2687866/…
  • 非常感谢,但是我需要把mysql_real_escape_string()函数放在哪里?
  • 你能发布用于查询的代码吗?
  • 是的,我会稍后编辑帖子

标签: php sql forms


【解决方案1】:

请参阅下面的修订代码。每个输入都需要在用于查询之前进行清理。这也是出于安全原因。在此处阅读更多信息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());
}

【讨论】:

  • 哇,非常感谢!有用!愿上帝保佑你!祝乔治有美好的一天!再见
  • 没问题,欢迎来到 Stack Overflow
猜你喜欢
  • 2011-02-09
  • 2011-11-23
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
相关资源
最近更新 更多