gpt4 book ai didi

php - 为什么 Fuelphp 生成不正确的查询

转载 作者:行者123 更新时间:2023-11-29 12:20:13 25 4
gpt4 key购买 nike

我正在尝试使用 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();

我的代码返回这个 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
  • FuelPHP 版本:1.7.2

最佳答案

您不能将表名绑定(bind)为预准备语句中的参数。它将作为字符串处理,因此该名称周围有单引号。

你必须使用:

$query = DB::query("SELECT LCASE($field) FROM `$table` WHERE $field = :val AND 'id' != :id");

关于php - 为什么 Fuelphp 生成不正确的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com