2014-03-18 54 views
0

使用joomla与k2我想从我的数据库调用与我的项目标题分配的类别,我使用此代码。为了实现这一目标。但有些错误。我确实得到了标题,但我没有得到类别名称。下面是我用来获取它的代码:为什么joomla中的这个错误?

?php 
$url= $_SERVER['REQUEST_URI']; 
$data = parse_url($url); 
$number = basename($data['path'], '.html'); 
$needle="-"; 
$number1=substr($number, 0, strpos($number, $needle)); 
?> 
<?php 
$db =& JFactory::getDBO(); 
$db->setQuery('SELECT title FROM #__k2_items WHERE id="'.$number1.'"'); 
$databaseTitle = $db->loadResult(); 
$db->setQuery('SELECT catid FROM #__k2_items WHERE id="'.$number1.'"'); 
$databaseCatid= $db->loadResult(); 
$db->setQuery('SELECT #__k2_categories.name FROM #__k2_categories INNER JOIN #__k2_items ON #__k2_categories.id = #__k2_items.catid WHERE #__k2_items.catid ="$databaseCatid" LIMIT 1'); 
$databaseNamecat= $db->loadResult(); 
?> 
<h2>Submit a Charter Request for <?php echo $databaseTitle." from port ".$databaseNamecat; ?></h2> 
+0

你很容易受到[SQL注入攻击(http://bobby-tables.com)。 –

回答

0

因为您正在用双引号括起一个变量。

试试这个

$db->setQuery("SELECT #__k2_categories.name FROM #__k2_categories INNER JOIN #__k2_items ON #__k2_categories.id = #__k2_items.catid WHERE #__k2_items.catid ='".$databaseCatid."' LIMIT 1 "); 
+0

谢谢。有效。 9个小时。干杯echo_Me! – tiesgr

+0

另外,您应该使用$ db-> quote($ myVariable)来清理查询参数。否则,您很容易受到SQL注入攻击。 –

+0

您是否有任何可以做到这一点的例子?查询来自我加载项目的页面时。这是不是从一个领域采用post方法进行消毒。我是对的还是缺少什​​么? – tiesgr