从Joomla SQL表中选择数据,其中任何值都是变量

时间:2015-12-28 18:29:16

标签: php mysql joomla

我正在尝试从我的数据库中选择数据,其中列id,名称,用户名或电子邮件中的任何值都是变量描述。当我这样做时,我得到一个错误1054,说明$ description中的值的列是未知的 - 错误如下所示。我究竟做错了什么?

请注意:jinput中使用的变量值在代码中进一步定义,如下面的错误所示,它被正确分配了一个值。

提前致谢

我的代码:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$description = $jinput->get('value', null , null);
$db->setQuery(" SELECT * FROM #__users WHERE MATCH(id, name, username, email) AGAINST ($description) ORDER BY #__users.name ");
$db->execute();
$results = $db->loadObjectlist();

这是我的错误:

Unknown column 'Ben' in 'where clause' SQL=SELECT * FROM tud_users WHERE MATCH(id, name, username, email) AGAINST (Ben) ORDER BY tud_users.name

1 个答案:

答案 0 :(得分:2)

您必须引用您的描述变量以避免此错误和SQL注入漏洞。

以下是修改后的代码:

$db = JFactory::getDbo();
$description = JFactory::getApplication()->input->getString('value','');
$db->setQuery("SELECT * FROM #__users WHERE MATCH(id, name, username, email) AGAINST (".$db->quote($description).") ORDER BY #__users.name ");
$db->execute();
$results = $db->loadObjectlist();

使用JFactory :: getApplication() - > input-> getString('value','');检索你想要的值。

始终使用Joomla方法引用内容$ db-> quote();