我收到以下错误:
更新错误:您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'ContactOfficeNo ='20045878'WHERE ClientCode ='MARI''第2行附近使用正确的语法
现在我注意到ClientCode='Mari'
之后还有另一个'?
但我的代码如下。我似乎无法找到问题。我有开放和&使用更新查询关闭""
,因为它应该是:
include("../dbinfo.inc.php");
$comm=@mysql_connect(localhost,$username,$password);
$rs=@mysql_select_db($database) or die( "Unable to select database");
$id = $_POST["clientcode"];
$cli = $_POST["clientname"];
$em1 = $_POST["email1"];
$em2 = $_POST["email2"];
$em3 = $_POST["email3"];
$cry = $_POST["currency"];
$occ = $_POST["othercc"];
$mob = $_POST["mobile"];
$dty = $_POST["dtymobile"];
$off = $_POST["office"];
$sql = "UPDATE tbl_client SET ClientName='$cli', ContactEmail#1='$em1', ContactEmail#2='$em2', ContactEmail#3='$em3', Currency='$cry', OtherCCinfo='$occ', ContactMobileNo='$mob', DutyMobileNo='$dty',
ContactOfficeNo='$off' WHERE ClientCode='$id'";
答案 0 :(得分:2)
$dty
的价值是多少?在这些时刻记住两个提示非常有用:
)错误(几乎)总是发生在SQL错误输出通知中的“near”点之前,因此 BEFORE ContactOfficeNo='20045878
中的几个字符是导致问题的原因
)在运行它之前error log完成SQL是很好的准备,以确切了解错误发生时的情况。
error_log("My SQL: Line ".__LINE__." :". $sql );
<强> Additionals:强>
1)正如其他人的评论所说,你真的应该考虑使用MySQLi或PDO参数化查询。
Little Bobby说 your script is at risk for SQL Injection Attacks. 。即使escaping the string也不安全!
- Jay Blanchard
如果使用参数化查询,则不会出现此问题。
- 戈登林诺夫
2)停止使用@
来抑制错误。你造成的问题比你解决的问题还多。
3)MySQL DEPRECATED ,不应使用。使用MySQLi
(或PDO
)。 立即强>
4)请阅读并注意Gordon和Jay在你的问题下面的评论,这可能是(可能)你的问题的原因,你没有逃避你的$_POST
输入。这是非常危险的,会导致各种各样的问题和颠簸。
5)在MySQL列名中包含非字母字符(因此不是a-z)充其量是有风险的,并且可能会导致其他问题。强烈建议不要在列名中放置任何非a-z字符。
请阅读Mark Baker关于合适列名的docs refrence。
ContactEmail#1
?!?你的列名真的有#吗?Permitted characters in unquoted identifiers: ASCII: [0-9,a-z,A-Z$_] (basic Latin letters, digits 0-9, dollar, underscore) Extended: U+0080 .. U+FFFF
如果你有其他字符,那么你需要在反引号中包装列名(`)
- 马克贝克