- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想知道如何在 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/
我是一名优秀的程序员,十分优秀!