这可能是一个初学者错误,但不幸的是我无法弄明白。
当我运行下面的代码时,我收到错误 'errno'=> int 1064 'sqlstate'=>字符串'42000'(长度= 5) 'error'=> string'你的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行'''Caribbean \''附近使用正确的语法(长度= 159)
如果我使用“select * from Country”查询有效,但当我添加“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());
答案 0 :(得分:0)
如果从文本文件中复制可能与脚本中的符号不同,则可以尝试检查引号。 在从键盘输入符号后,如果仍然出现错误,请尝试将国家/地区名称放入变量并通过引用进行调用。
答案 1 :(得分:0)
你应该只转义参数,而不是整个查询。
类似的东西:
$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());