我真的很喜欢以下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中,结果发现有一个字符“潜伏在应该存在的地方”。这导致信息显示为“空”。
答案 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);因为如果你刚刚进行了查询,指针就已经在第一条记录上了。