背景
- 框架:Codeignighter/PyroCMS
我有一个存储产品列表的数据库,duplicate function
我的应用程序中有一个首先查找通用产品名称的数据库,因此它可以suffix
为重复的产品添加一个“”值。
我的 Products 模型类中的代码
$product = $this->get($id);
$count = $this->db->like('name', $product->name)->get('products')->num_rows();
$new_product->name = $product->name . ' - ' . $count;
在第二行,应用程序仅在$product->name
包含引号时才会失败。我理解 Codeignighter 转义了所有字符串,所以我不知道为什么会出现此错误。
所以我尝试使用 MySQL 转义字符串函数,但这也无济于事。
错误信息
A Database Error Occurred
Error Number: 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 's Book%'' at line 3
SELECT * FROM `products` WHERE `name` LIKE '%Harry\\'s Book%'
var_dump
以下是在相关行之前和之后执行var_dump
on的输出;product->name
string 'Harry's Book' (length=12)
A Database Error Occurred
Error Number: 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 's Book%'' at line 3
SELECT * FROM `products` WHERE `name` LIKE '%Harry\\'s Book%'