Массив, возвращающий то же значение в PHP - PullRequest
0 голосов
/ 16 июля 2009
  $result = mysql_query("SELECT position
        FROM ".$this->table_name."
        WHERE c_name = '".$chName."'");

        while($row = mysql_fetch_array($result)) 
        {
            return(array($row['position']));
        }

Я получаю то же значение, даже если я изменяю поле со списком ... мне нужен идентификатор поля со списком, когда оно изменяется. Но каждый раз, когда я выбираю, отображается одно и то же значение.

function getID($chName) {

}

chName - это значение, которое я получаю из поля со списком Flex.

Ответы [ 5 ]

2 голосов
/ 16 июля 2009

Вы всегда возвращаете только первый ряд. Может быть, вам нужен весь набор данных, а не только первая запись. Итак, попробуйте это:

$result = mysql_query("SELECT position
    FROM ".$this->table_name."
    WHERE c_name = '".$chName."'");
$retVal = array();
while ($row = mysql_fetch_array($result)) {
    $retVal[] = $row['position']);
}
return $retVal;
0 голосов
/ 16 июля 2009

Другие люди опубликовали хороший ответ; Только одно предложение - закодируйте класс-оболочку БД, чтобы вам не приходилось постоянно извлекать массивы вручную, что является источником постоянной ошибки. У меня есть свой собственный класс Query, и после выполнения запроса я просто делаю $ query-> dumpResultAsArray () и оттуда выполняю for-each.

Это менее эффективно, но более надежно и проще в отладке.

0 голосов
/ 16 июля 2009

Не используйте двойные кавычки, если вам не нужны переменные внутри анализируемого.

$results = array();

// Dont forget you should be escaping $chName
$result = mysql_query("SELECT `position` FROM `{$this->table_name}` WHERE `c_name` = '$chName';");

while($row = mysql_fetch_array($result)) 
{
    $results[] = $row['position'];
}

return $results;

Или

$results = array();

// Dont forget you should be escaping $chName
$result = mysql_query('SELECT `position` FROM `'.$this->table_name.'` WHERE `c_name` = \''.$chName.'\';');

while($row = mysql_fetch_array($result)) 
{
    $results[] = $row['position'];
}

return $results;
0 голосов
/ 16 июля 2009

Гамбо ответ правильный.

Обратите внимание, что безоговорочный возврат чего-либо внутри цикла заставляет сам цикл запускаться только один раз . В общем, это правда, и вы всегда должны избегать такого монстра:)

Если вы парень, который экономит память, вы делаете очень мало памяти для улучшения процессора:

mysql_fetch_assoc()

, который позволяет избежать извлечения целочисленного индексированного массива, который вы не будете использовать

0 голосов
/ 16 июля 2009

почему

 return(array($row['position']));

и не только

return($row['position']);

Для любой другой помощи вы должны предоставить больше информации (hmtl? Output?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...