我的PHP数组的第一个值返回为' null'当它有一个值

时间:2011-05-16 19:38:50

标签: php mysql

我真的很喜欢以下MySQL / PHP问题的一些帮助(可能是bug?)

我正在尝试使用MySQL / PHP从我的数据库中检索和显示数据数组,但是当我回显数组时,它会将第一个值返回为“null”。

因此,即使数据库具有以下信息:

"Example 1", "Example 2", "Example 3"...

php回声:

"null", "Example 2, "Example 3"

我认为这是一个常见的问题,但我还没有在互联网上的其他地方找到所需的信息,所以我希望你们能帮助你们。

我的PHP

/* If connection to database, run sql statement. */
if ($conn) {
    $fetch = mysql_query("SELECT column FROM table WHERE approved = '1' ");

    // declare empty array to fill later
    $result = array();

    // make sure the MySQL pointer is looking at the first row
    mysql_data_seek($fetch, 0);


    while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {

        foreach ($row as $value) {

            $row_array = $value;

            // push info into new array with just the value
            array_push($result, $row_array);
        }
    }
}
/* Free connection resources. */
mysql_close($conn);

/* Toss back results as json encoded array. */
echo json_encode($result);

更新

新代码由Mark B提供:

if ($conn)
{
$sql = "SELECT column_name FROM table WHERE comment_approved = '1' "; 
$query = mysql_query($sql) or die(mysql_error());

$result = array();
while ($row = mysql_fetch_assoc($query)) {
    $result[] = $row['column_name'];

}

}

/* Free connection resources. */
mysql_close($conn);

/* Toss back results as json encoded array. */
echo json_encode($result);

注意:

在有或没有:

的情况下仍会出现'null'问题
 mysql_data_seek($fetch, 0);

因为它似乎无能为力。

任何帮助都会很棒!

解决

感谢Mark B指出问题可能在数据库而不是PHP中,结果发现有一个字符“潜伏在应该存在的地方”。这导致信息显示为“空”。

3 个答案:

答案 0 :(得分:4)

$sql = "SELECT column FROM table WHERE approved = '1'";
$result = mysql_query($sql) or die(mysql_error());

$data = array();
while($row = mysql_fetch_assoc($result)) {
    $data[] = $row['column'];
}

echo json_encode($data);

你不应该进行搜寻,因为你当时没有对结果做任何事情。而且由于您只从数据库中获取单个列,因此不需要内部foreach()循环。

答案 1 :(得分:0)

尝试删除对mysql_data_seek的通话。我没有理由说明MySQL指针在第一次调用mysql_fetch_array时没有指向第一行。

答案 2 :(得分:0)

您可以尝试删除mysql_data_seek($ fetch,0);因为如果你刚刚进行了查询,指针就已经在第一条记录上了。