gpt4 book ai didi

php - SQL 查询转义 + codeigniter

转载 作者:可可西里 更新时间:2023-11-01 06:55:55 26 4
gpt4 key购买 nike

我使用的是 codeigniter,大多数时候我的查询使用事件记录(它会自动转义它们),但由于变量的原因,这个查询似乎不太适合它。所以我需要弄清楚如何手动转义查询。

Codeigniter 文档建议以这种方式转义查询:

$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";

我的原始查询

$sql = "SELECT * FROM (`user_language`) WHERE `user_id` = '{$id}'";

我的转义查询

$sql = "SELECT * FROM (`user_language`) WHERE `user_id` = '{$id}' VALUES(".$this->db->escape($user_language).")";

但是我在正确使用语法时遇到了问题。错误信息是:

  • PHP 错误信息: undefined variable :user_language
  • SQL 错误:语法错误...在第 1 行的“VALUES(NULL)”附近

最佳答案

$sql = "SELECT * FROM `user_language` WHERE `user_id` = " . $this->db->escape($id);

如果你想选择由 $id 给定的用户的语言,它应该这样工作。

处理数字的另一种方法是:

$sql = "SELECT * FROM `user_language` WHERE `user_id` = " . (int)$id;

codeigniter 也支持准备好的语句作为“查询绑定(bind)”:

The secondary benefit of using binds is that the values are automatically escaped, producing safer queries. You don't have to remember to manually escape data; the engine does it automatically for you.

关于php - SQL 查询转义 + codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435109/

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