我遇到了在广告区域的文本框中输入撇号的问题。我收到一条错误消息,指出使用了错误的语法,并检查mysql手册中是否有正确的语法。以下是我得到的确切错误。
MySQL错误:1064(您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获得正确的语法,只需检查以确保您收到免费下载。如果没有,这是'第5行)
我已经检查了我的托管服务,但他们无法帮助我。我打电话给自动回复软件开发人员并发邮件,但他们没有回应。 (后来发现了为什么,所有的投诉都反对他们)。我在网上搜索并发现了一些像这样的网站,但我不知道如何设置字符串或在哪里放置它。
请帮忙。 谢谢, 丹妮丝
答案 0 :(得分:0)
尝试对每个撇号使用两个撇号。如果这样做,那么在数据库处理sql之前执行验证替换。
答案 1 :(得分:0)
如果您正在使用PHP,请使用“mysql_real_escape_string
”使您的帖子或变量安全并进行sql验证。这将使您的字符串安全“SQL注入太多”
<?php
if (isset($_POST['product_name']) && isset($_POST['product_description']) && isset($_POST['user_id'])) {
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');
if(!is_resource($link)) {
echo "Failed to connect to the server\n";
// ... log the error properly
} else {
// Reverse magic_quotes_gpc/magic_quotes_sybase effects on those vars if ON.
if(get_magic_quotes_gpc()) {
$product_name = stripslashes($_POST['product_name']);
$product_description = stripslashes($_POST['product_description']);
} else {
$product_name = $_POST['product_name'];
$product_description = $_POST['product_description'];
}
// Make a safe query
$query = sprintf("INSERT INTO products (`name`, `description`, `user_id`) VALUES ('%s', '%s', %d)",
mysql_real_escape_string($product_name, $link),
mysql_real_escape_string($product_description, $link),
$_POST['user_id']);
mysql_query($query, $link);
if (mysql_affected_rows($link) > 0) {
echo "Product inserted\n";
}
}
} else {
echo "Fill the form properly\n";
}
?>