从 Joomla SQL Table 中选择数据,其中任何值都是变量
Selecting Data from Joomla SQL Table where any value is the variable
我正在尝试 select 我的数据库中的数据,其中 id、name、username 或 email 列中的任何值都是变量描述。当我这样做时,我收到错误 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
您必须引用描述变量以避免此错误和 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();
引用内容
我正在尝试 select 我的数据库中的数据,其中 id、name、username 或 email 列中的任何值都是变量描述。当我这样做时,我收到错误 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
您必须引用描述变量以避免此错误和 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();
引用内容