这可能是一个初学者错误,但不幸的是我还没能弄清楚。
当我运行下面的代码时,我得到了错误'errno'=>int 1064"sqlstate"=>字符串"42000"(长度=5)'error'=>string'您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,以获得在第1'行(长度=159)的"'''Carribean'''"附近使用的正确语法
如果我使用"从国家/地区选择*",查询有效,但当我添加"where Region='Caribbean"时,查询无效。
$sql = "select * from Country where Region = 'Caribbean'";
$db = mysqli_init();
$db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
@ $db->real_connect('localhost', 'user', 'passwd', 'world');
if ($db->connect_errno) {
echo "Failed to connect to MySQL: (". $db->connection_errno . ")".
$mysqli->connect_error;
exit;
}
$sql = $db->real_escape_string($sql);
$result = $db->query($sql);
var_dump($db->error_list);
var_dump($result->fetch_all());
您应该只转义params,而不是整个查询。
类似于:
$region = 'Caribbean';
$paramRegion = $db->real_escape_string($region);
$sql = "select * from Country where Region = '".$paramRegion."'";
$db = mysqli_init();
$db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
@ $db->real_connect('localhost', 'user', 'passwd', 'world');
if ($db->connect_errno) {
echo "Failed to connect to MySQL: (". $db->connection_errno . ")".
$mysqli->connect_error;
exit;
}
$result = $db->query($sql);
var_dump($db->error_list);
var_dump($result->fetch_all());
如果从文本文件复制,则可以尝试检查引号符号,该文本文件可能与脚本中的符号不同。同样,在键盘上输入符号后,如果仍然出现错误,请尝试将国家名称放入变量中并通过引用调用。