我的查询是,
update test set testname='Women's education' where id = 123
我收到此错误
#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在附近使用
任何人都可以解决我的问题
答案 0 :(得分:1)
update test set testname="Women's education" where id = 123
如果你有'值
,请使用“”答案 1 :(得分:1)
SQL需要转义撇号。您的代码应该为您执行此操作:
<?php
$dbh=mysqli_connect("db_host","db_user","db_pass","db_name");
$update_str = $_POST['testname']; # "Women's education"
$test = mysqli_real_escape_string($dbh, $update_str);
$sql="UPDATE test (testname) VALUES ('$update_str')";
if (!mysqli_query($dbh,$sql)) {
die('Error: ' . mysqli_error($dbh));
}
echo "1 record updated";
mysqli_close($dbh);
?>
答案 2 :(得分:0)
update test set testname="Women's education" where id = 123
试试这个或:
update test set testname="Women`s education" where id = 123
答案 3 :(得分:0)
在这种情况下,&#39;没有逃脱。这可以使用两个单引号进行转义,因为其他答案已经指出。
在现实世界的示例中,要设置的字符串可能是动态的。在这种情况下,我建议您使用SQL-Driver的escape-function为您转义字符串。这另外可以防止SQL注入。根据您的SQL驱动程序,这样的查询可以是这样的:
mysqli_query("update test set testname = '".mysqli_real_escape_string($value)."' where id = ".(int)$id);
或
$db->query("update test set testname = '".$db->real_escape_string($value)."' where id = ".(int)$id);
$db->query("update test set testname = ".$db->quote($value)." where id = ".(int)$id);
(int)$ id将变量$ id解析为整数,因此也阻止了SQL-Injection。