2011-12-28 68 views
0

我正在尝试执行以下PHP/MySQL查询,并且它对前两个组工作正常,但对于其他所有人,我都会收到MySQL错误,请问这是正确写入的吗?与MySQL查询问题,编码错误?

$user =& JFactory::getUser(); 
$N = $user->get('name'); 
$username = $user->get('username'); 
$groups = $user->get('groups'); 

foreach($groups as $groupName=>$groupId) 
{ 
} 

$G=$groupName; 

if ($G=="Management Staff") 
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead"); 
elseif ($G=="Website Developers") 
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead"); 
else 
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE createdby=$N"); 

当我登录,别人我得到:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\server2go\server2go\htdocs\chandlers\components\com_jumi\views\application\view.html.php(38) : eval()'d code on line 87

Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\server2go\server2go\htdocs\chandlers\components\com_jumi\views\application\view.html.php(38) : eval()'d code on line 132

+0

你会得到什么错误? – 2011-12-28 23:22:15

+0

我已将它添加到 – 2011-12-28 23:25:33

+0

错误所引用的对'mysql_fetch_object'的调用在哪里?我在上面的代码片段中看不到'mysql_fetch_object'的调用。它是否在'$ result'的这个块之后出现?如果是这样的话,似乎'$ result'没有被设置。 – Batkins 2011-12-28 23:29:17

回答

0
$result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE createdby=$N"); 

是腥,应该是

$result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE createdby='$N'"); 

确保$ N没有任何恶意。

+0

谢谢,那是现在的工作,只显示该用户创建的结果应该如何,谢谢:-),我会在它让我的时候接受你的答案。 – 2011-12-28 23:31:36

0

不知道这是否只是一个可怜的复制/粘贴工作,你进入stackoverflow,但它看起来像你的花括号都是不正常的。认为你会想要更像这样的东西:

$username = $user->get('username'); 
$groups = $user->get('groups'); 
foreach($groups as $groupName=>$groupId) { 
    $G=$groupName; 
    if ($G=="Management Staff") 
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead"); 
    elseif ($G=="Website Developers") 
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead"); 
    else 
    $result = mysql_query("SELECT * FROM hqfjt_chronoforms_data_addupdatelead WHERE  createdby=$N"); 
} 

因此,你的foreach循环实际上执行下面的代码。你粘贴到你的问题的代码有一个针对每一个,因为它是这样写的循环中执行任何循环:

foreach($groups as $groupName=>$groupId) {} 

然后你继续尝试使用一个变量从foreach循环之外循环:

$G=$groupName; 
if ($G=="Management Staff") 
... 

这将无法工作,因为$groupName变量只有foreach循环的范围内进行设置。