проблема с запросом MySQL, плохое кодирование? - PullRequest
0 голосов
/ 29 декабря 2011

Я пытаюсь выполнить следующий запрос PHP / 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

Ответы [ 2 ]

0 голосов
/ 29 декабря 2011

Не уверен, что это была плохая работа по копированию / вставке, которую вы выполняли в 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.

0 голосов
/ 29 декабря 2011
$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 нет ничего плохого.

...