gpt4 book ai didi

php - 如何在 Joomla 3 的查询中使用准备语句/绑定(bind)值?

转载 作者:可可西里 更新时间:2023-11-01 00:20:53 27 4
gpt4 key购买 nike

我想知道如何在 where 子句中绑定(bind)值。我明白出于安全原因必须这样做。

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select("*")
->from($db->quoteName("food"))
->where("taste = :taste")
->bind(':taste', 'sweet');
$db->setQuery($query);
$rows = $db->loadAssocList();

我收到这个错误:

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 ':taste' at line 3 SQL=SELECT * FROM food WHERE taste = :taste

我的代码基于 this post .它说在 Joomla 3.1 中只有“PDO/Sqlite 和 PDO/Oracle 支持准备好的语句”,我正在使用 Joomla 3.2.1 和 MySQL,并且在我的 Joomla 配置 MySQLi 中。这可能是问题所在吗?

我很困惑,因为我不知道必须遵循什么 API/类。

甚至我开始怀疑我是否必须使用 JFactory::getDbo() 来选择/插入/更新/删除 Joomla 数据库中的数据。

提前致谢。

最佳答案

据我所知,您不能使用准备好的语句,也不能使用 Joomla 绑定(bind)值。

如果您阅读 Joomla 文档 ( http://docs.joomla.org/Secure_coding_guidelines#Constructing_SQL_queries ) 中的安全编码指南,他们不会谈论准备好的语句,只会谈论使用强制转换或引用来避免 SQL 注入(inject)。

关于php - 如何在 Joomla 3 的查询中使用准备语句/绑定(bind)值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079199/

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