2

我在下面收到以下错误,我相信它部分是我在变量5'10 - (178cm)传递的插入字符串中的引用。$en['height']处理此错误的最佳方法是什么?

错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 12 行的 '10 - (178cm)', m_btype = 'Rather Not Say' 附近使用正确的语法

这是mysql插入:

m_height = '".$en['height']."',

表设置为:

varchar(30) latin1_swedish_ci
4

1 回答 1

4

您的问题是您必须在将字符串输入 SQL 查询之前“转义”字符串。不这样做将允许人们通过输入引号来更改您的查询。例如,如果我输入以下字符串:

'; select * from users; --

它可以执行您不打算执行的 SQL。解决办法是逃避:

m_height = '".mysql_real_escape_string($en['height'])."',

或者更好的是使用更新的方法来查询 mysql,例如 PDO 或 mysqli 函数。

编辑我还认为您有更一般的语法错误。尝试这个:

m_height = "'".mysql_real_escape_string($en['height'])."'",
于 2013-09-03T19:28:22.550 回答