-1

我有一个小问题,当我在我的论坛上提交数据时,我收到了这个错误:

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在“解释、国家、IP、主机名”附近使用的正确语法

我的代码是这样的:

        $STH = $DBH->prepare("INSERT INTO `Applications` (`Username`, `Email`, `Age`, `Reason`, `Explain`, `Country`, `IP`, `Hostname`) 值 ( $username, $email, $age, $reason, $explain, $country, $ip, $hostname)");
        $STH->执行();

我似乎找不到问题所在。

4

1 回答 1

2

您没有正确使用 PDO,从而产生大量 SQL 注入问题。放入 SQL 的值需要正确转义。

占位符方法要求这样做:

$STH = $DBH->prepare("INSERT INTO `Applications` (`Username`, `Email`, `Age`, `Reason`, `Explain`, `Country`, `IP`, `Hostname`) VALUES (:username, :email, :age, :reason, :explain, :country, :ip, :hostname)");
$STH->bindParam(':username', $username);
$STH->bindParam(':email', $email);
... (remaining columns) ..
$STH->bindParam(':hostname', $hostname);
$STH->execute();

这是确保您的 SQL正确转义的最佳方法。

于 2013-04-05T20:50:51.677 回答