繁体   English   中英

数组在PHP中返回相同的值

[英]Array Returning the same value in PHP

  $result = mysql_query("SELECT position
        FROM ".$this->table_name."
        WHERE c_name = '".$chName."'");

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

即使更改combox,我也得到相同的值...更改时,我需要combox的ID。 但是对于每次我选择它都会显示相同的值。

function getID($chName) {

}

chName是我从Flex的组合框中获得的值。

您总是只返回第一行。 也许您想要整个数据集,而不仅仅是第一条记录。 所以试试这个:

$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;

为什么

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

而不仅仅是

return($row['position']);

对于任何其他帮助,您必须提供更多信息(hmtl?输出?)

浓汤的答案是正确的。

请注意,无条件返回循环内的某些内容会使循环本身运行一次 通常这是对的,您应该始终避免使用这种怪物:)

如果您是节省内存的人,那么您会在CPU方面做很少的改进:

mysql_fetch_assoc()

避免检索您不会使用的整数索引数组

如果您不希望在变量内部进行解析,请不要使用双引号。

$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;

其他人都发表了很好的答案。 只是一个建议-对数据库包装器类进行编码,因此您不必一直手动获取数组,这是不断出错的来源。 我有自己的Query类,执行查询后,我只需要执行$ query-> dumpResultAsArray()并从那里进行for-each。

它的效率较低,但更健壮且更易于调试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM