添加where子句时出错


Error when adding where clause

这可能是一个初学者错误,但不幸的是我还没能弄清楚。

当我运行下面的代码时,我得到了错误'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());

如果从文本文件复制,则可以尝试检查引号符号,该文本文件可能与脚本中的符号不同。同样,在键盘上输入符号后,如果仍然出现错误,请尝试将国家名称放入变量中并通过引用调用。