我正在尝试从我的数据库中选择数据,其中列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
答案 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();