php - 转义用户代理 : $mysqli->real_escape_string does not work

标签 php mysql sql

我有这个 PHP 代码:

$ua = $mysqli->real_escape_string($_SERVER['HTTP_USER_AGENT']);

$mysqli->query("INSERT INTO browsers(useragent, account, allowed, key, ip) VALUES('$ua', {$userR['id']}, 0, '(Key/token)', '(IP address)')");

以下 SQL 查询是:

INSERT INTO browsers(useragent, account, allowed, key, ip) VALUES('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17', 8, 0, 'bc132b38f35a01ce', '127.0.0.1')

但是:即使转义查询也不起作用:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key, ip) VALUES('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like' at line 1

最佳答案

您在查询中使用了 mysql RESERVED KEYWORD,即 key,只需用反引号 ` 将其括起来,让数据库知道它是一列

$mysqli->query("INSERT INTO browsers(useragent, account, allowed, `key`, ip) VALUES('$ua', {$userR['id']}, 0, '(Key/token)', '(IP address)')");

关于php - 转义用户代理 : $mysqli->real_escape_string does not work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786902/

相关文章:

mysql - 使用 Helm 安装的 Kafka/Confluent 的连接器

mysql - LIKE 子句和 AND 运算符在 DELETE 期间不起作用

MySQL左外连接与where子句 - 返回不匹配的行

php - 为什么 "<?"不再有效,而只有 "<?php"有效?

mysql - 如果一种类型在子查询之外,如何选择记录但排除?

php - PHP和MySQL-mysqli_free_result()期望参数1为mysqli_result,在第110行给出的 bool 值

java.sql.SQLException : Before start of result set. ..如何消除这个错误

sql - 给定一组 ID,返回仅包含这些 ID 的订单子(monad)集

php - 有序/无序列表标签 <ol><ul> 不显示列表元素符号

php - 获取产品最近 3 个月的销售数量