【问题标题】:Odd mysql_fetch_array behavior奇怪的 mysql_fetch_array 行为
【发布时间】:2011-08-06 00:37:19
【问题描述】:

这是我重复使用的函数中的两条违规行:

//snip
$req = mysql_query($sql,$db) or die(db_query_error($sql,mysql_error()));
//Breakpoint A
$data = mysql_fetch_array($req);
//Breakpoint B
//snip

在断点 A:

  • $req 是一个有效的资源
  • $db 是一个有效的资源
  • $sql 有效,对数据库运行时将返回预期值,一个简单的字符串
  • 不会引发错误

在断点 B:

  • $data 应该是一个索引为 0 的数组,该数组是一个字符串,其中一个名为“get”的关联词具有相同的字符串

问题是在这个页面上,除了一个之外,每个查询都有效。对于不起作用的查询,当手动运行 SQL 时,它会起作用并返回正确的值。我在此调用之前和之后运行的查询可以正常运行。

  • 如果我计算 ($data),我得到 1。
  • 如果我回显“-”.$data.“-”,我会得到“--”。
  • 如果我回显 $data[0],则为空白
  • 如果我回显 $data[1],则为空白(这不会产生错误吗?)

编辑#1 - 在我们的自定义调试函数中,正在使用 print_r。 - $data 的 var_dump 显示它是“bool(false)”。 $db 或 $sql 变量有问题。

编辑#2 这个问题与 MySQL 无关。这与我们的发布过程以及在此过程中数据所在的位置有关。

【问题讨论】:

  • 你为什么不把查询放在问题中......在你的问题中?
  • @Shredder:查询不是问题,因为它在针对数据库运行时可以很好地解决。事实是 $data 不应该是空白的。

标签: php mysql


【解决方案1】:

你可以试试

 var_dump($data);

也尝试改变

mysql_fetch_array();

mysql_fetch_assoc();

或到

mysql_fetch_row();

如果你使用数字索引。

我想这些测试会给你答案

【讨论】:

  • 我很确定我已经尝试过 var_dump 并且它只是空白。好吧,我假设我们的自定义 debug() 函数使用它。另外,我不确定是否可以更改为 _fetch_assoc 或 _fetch_row。现有的代码库到处都使用这个函数,我不确定只使用索引或关联的影响。
  • 我仔细检查了,我们的自定义调试函数实际上使用了 print_r。我将尝试 var_dump 看看是否有任何不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2015-07-20
  • 2010-10-03
  • 2021-07-12
相关资源
最近更新 更多