【发布时间】:2013-08-24 12:25:16
【问题描述】:
我正在通过 Joomla 项目学习和执行 php 如何改进此代码并解决 PHP 通知 - 任何建议 - 解决方案 - 非常感谢!!
注意:未定义变量:cond in*/home/mygames/public_html/components/com_toys/models/category.php 第 140 行 (这是 $sql 行)*
function loadSubCat($id,$Carmodel,$minprice,$maxprice){
$mainframe =& JFactory::getApplication();
$option = JRequest::getCmd('option');
$database =& JFactory::getDBO();
global $Itemid;
if($Carmodel!="")
$cond=" and prod_id='$Carmodel' ";
$sql = "Select * from #__toycar_products Where prod_cat_id='".$id."' $cond and prod_status='1' and prod_id in (select v_prod_id from #__toycar_variants) Order By prod_sorder";
注意:试图在/home/truecar7/public_html/components/com_toys/models/category.php第200行获取非对象的属性
第 200 行是 return $row->id;
function getItemIdByName($Name){
$mainframe =& JFactory::getApplication();
$option = JRequest::getCmd('option');
$database =& JFactory::getDBO();
$sql = "Select id from #__menu Where name = '".$Name."'";
$database->setQuery($sql);
$row = $database->loadObject();
return $row->id;
}
编辑
你好 Lodder & Elin,它可以工作,但就像这样,否则它会在 return $row 行上显示未定义的变量通知。
function getItemIdByName($Name){
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('*')
->from('#__menu')
->where('id = ' . $db->quote($Name));
$db->setQuery($query);
$rows = $db->loadObjectList();
foreach ($rows as $row){
$row = $row->msg;
}
$row='';
return $row;
}
【问题讨论】:
-
不要在表名中使用
#等特殊字符,以免出现此类问题#__menu -
@VahidHallaji - 这就是 Joomla 数据库表的设计方式。这是一个前缀
-
鉴于您已将 $row 的返回值硬编码为空字符串,我真的不明白您在做什么。如果您只想为一行返回一个字符串,则不应执行 $db->loadObjectList() ,它会为您提供一组对象。而是加载你想要的结果.. 不要选择 '*' 选择 'msg' 并返回 $db->loadResult() docs.joomla.org/JDatabase/loadResult
-
感谢艾琳,工作真棒!