为什么 fuelphp 生成不正确的查询
Why is fuelphp generating incorrect queries
我正在尝试使用 fuelphp 生成数据库查询。
$query = DB::query("SELECT LCASE(:field) FROM :table WHERE :field = :val AND 'id' != :id");
$query->bind('field',$field);
$query->bind('table',$table);
$query->bind('val',$val);
$query->bind('id',$id);
$result = $query->execute();
我的代码returns这个mysql查询:
SELECT LCASE('short_code') FROM 'events' WHERE 'short_code' = 'uvt2015' AND 'id' != '0`
这给了我这个错误
#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 'events' WHERE 'short_code' = 'uvt2015' AND 'id' != '0'
当我替换列名周围的单引号时,我得到了这个查询,它给出了我想要的结果。
SELECT LCASE(`short_code`) FROM `events` WHERE `short_code` = 'uvt2015' AND `id` != '0'
为什么 fuelphp 使用错误的引号生成查询?我怀疑这可能是与我的 fuelphp/php/mysql.
版本相关的错误
- PHP 版本:5.5.12
- MySQL 版本:5.6.17
- 燃料PHP版本:1.7.2
您不能将 table 名称绑定为预准备语句中的参数。它将作为字符串处理,因此该名称两边有单引号。
你必须使用:
$query = DB::query("SELECT LCASE($field) FROM `$table` WHERE $field = :val AND 'id' != :id");
我正在尝试使用 fuelphp 生成数据库查询。
$query = DB::query("SELECT LCASE(:field) FROM :table WHERE :field = :val AND 'id' != :id");
$query->bind('field',$field);
$query->bind('table',$table);
$query->bind('val',$val);
$query->bind('id',$id);
$result = $query->execute();
我的代码returns这个mysql查询:
SELECT LCASE('short_code') FROM 'events' WHERE 'short_code' = 'uvt2015' AND 'id' != '0`
这给了我这个错误
#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 'events' WHERE 'short_code' = 'uvt2015' AND 'id' != '0'
当我替换列名周围的单引号时,我得到了这个查询,它给出了我想要的结果。
SELECT LCASE(`short_code`) FROM `events` WHERE `short_code` = 'uvt2015' AND `id` != '0'
为什么 fuelphp 使用错误的引号生成查询?我怀疑这可能是与我的 fuelphp/php/mysql.
版本相关的错误- PHP 版本:5.5.12
- MySQL 版本:5.6.17
- 燃料PHP版本:1.7.2
您不能将 table 名称绑定为预准备语句中的参数。它将作为字符串处理,因此该名称两边有单引号。
你必须使用:
$query = DB::query("SELECT LCASE($field) FROM `$table` WHERE $field = :val AND 'id' != :id");