如何运行这个mysql查询

时间:2011-12-22 12:59:15

标签: php mysql joomla

我正在尝试从Joomla中当前登录用户创建的数据库中加载所有记录,我不确定它是否可能在mysql查询中包含php?如果不是,我将如何进行否则呢?

SELECT
  leadname,
  businessname,
  postcode,
  gasoiluser,
  dervuser,
  kerouser,
  cf_uid,
  cf_id
FROM
  #__chronoforms_data_addupdatelead
WHERE createdby = '<?php
  $user =& JFactory::getUser(); echo $user->get('name') ; ?>'
ORDER BY cf_created DESC

2 个答案:

答案 0 :(得分:2)

当然,您可以访问PHP变量来创建查询 - 正如#__前缀所示,您已经在“Joomla内部”运行查询。这意味着在php中 ,这样的事情应该做你想做的事情:

$user =& JFactory::getUser();
$db =& JFactory::getDBO();
if (!$user->guest) {
    $query = 'SELECT leadname, businessname, postcode, gasoiluser, '.
        ' dervuser, kerouser, cf_uid, cf_id '.
        ' FROM #__chronoforms_data_addupdatelead '.
        ' WHERE createdby = '.$db->Quote($user->name)).
        ' ORDER BY cf_created DESC';
    $db->setQuery($query);
}

但是更多的上下文会帮助我们看到你必须要做的事情 - 围绕SQL查询的代码是什么 - 它是在php文件中吗?

请记住,echo会打印到响应,这不是您想要做的事情,您想要更改查询;所以只需将变量内容连接到您的查询,如上所示;你应该已经在php模式下定义了这个查询,所以<?php标签是没有用的(但同样,上下文太少,无法确定这一点)!

答案 1 :(得分:-1)

mysql是一个数据库服务器,它接受字符串并返回结果集错误

传递给mysql的

string 必须是正确的SQL语句

你在问题​​中所拥有的不是正确的SQL语句,它是一个等待PHP解析的字符串以及谁知道谁是

这部分肯定是PHP:

<?php $user =& JFactory::getUser(); echo $user->get('name') ; ?>

此部分类似于正确表名的占位符,在运行时替换了您从此查询获得的任何内容(假设为joomla):

#__chronoforms_data_addupdatelead

如果要运行该查询,则必须找出用上述块替换的内容