我正在尝试从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
答案 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
如果要运行该查询,则必须找出用上述块替换的内容