0

我有一个数据库,它有 2 列idtitle.用户在 Joomla 2.5 组件(管理视图)的表单中 title提交值时 ,过滤这些表值以显示匹配结果的最佳方法是什么?id

当我在这里查看文档时:

http://docs.joomla.org/Selecting_data_using_JDatabase

我看到通过使用 Joomla 的 API,我可以使用速记来创建此连接。我努力了:

$userSubmittedIDValue = $_GET["userSubmittedIDValue"];

// Get a db connection.
$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

$query
->select($db->quoteName(array('title')))
->from($db->quoteName('#__mycomponent_table'))
->where($db->quoteName('id') . ' = '. $db->quote('$userSubmittedIDValue'))

$results = $db->loadObjectList();

不幸的是,这会产生以下错误:

Parse error: syntax error, unexpected T_VARIABLE

然后错误指向$results = $db->loadObjectList();

我只需要提取该值并将其应用于 php 变量,以便我可以根据需要使用它。有任何想法吗?


好的,感谢第一个答案,我意识到我错过了一个分号。我现在遇到的麻烦仍然是使用foreach. 我尝试添加以下内容:

foreach (array($results) as $userSubmittedIDValue) {

echo $results;

}

但这只是打印单词Array。我越来越近了,但还是有什么不对劲。

4

1 回答 1

0

由于您在查询后缺少分号,因此您收到了该错误。

所以,改变这个:

->where($db->quoteName('id') . ' = '. $db->quote('$userSubmittedIDValue'))

对此:

->where($db->quoteName('id') . ' = '. $db->quote('$userSubmittedIDValue'));

只需注意;最后

完成后,您可以使用foreach循环来显示结果。

所以你最终使用的代码是这样的:

$db = JFactory::getDBO();
$query = $db->getQuery(true);

$query->select('*')
->from('#__mycomponent_table')
->where($db->quoteName('id') . ' = '. $db->quote($userSubmittedIDValue));

$db->setQuery($query);    
$rows = $db->loadObjectList();

foreach ($rows as $row) {
    echo $row->title;
}

我之前完全忘了提到,您还必须删除查询中包含的单引号$userSubmittedIDValue,如我上面的代码所示。希望这可以帮助

于 2013-10-21T19:29:27.187 回答