【问题标题】:mysql_fetch_array returns an array and the number "1"mysql_fetch_array 返回一个数组和数字“1”
【发布时间】:2014-04-18 16:41:52
【问题描述】:

mysql_fetch_array 有问题。我正在尝试这样做:

if(count(mysql_fetch_array(mysql_query($peticion)))) {
    array_push($errores, $texto['conta_existe']);
}

前面的代码应该检测 mysql_fetch_array 是否在我的数据库中找到一行,如果找到至少一个,则应该推送一个数组。问题是,如果我的数据库中没有任何内容,那么 fetch_array 会返回数字“1”。

我试图找出这种和平的代码发生了什么:

$arrayc = mysql_fetch_array(mysql_query($peticion), MYSQL_NUM);
echo 'PRINT_R: ';
echo print_r($arrayc);
echo '<br>COUNT: ';
echo count($arrayc);

然后返回:

PRINT_R:数组([0] => FLEREX [conta] => FLEREX)1

计数:2

我不明白为什么在数组之后会有第一个。前一个报价只返回一行,向您展示数组;但如果数据库中没有任何行,这就是我得到的:

PRINT_R:1

计数:1

我不知道那个从哪里来,但一直都在那里。

感谢阅读,抱歉我的英语不好。

【问题讨论】:

  • echo print_r($arrayc);....print_r($arrayc)输出$arrayc的值,并返回一个布尔值true;然后您将回显该返回值,并显示为1
  • 删除此处的回声echo print_r($arrayc)
  • 请注意,开始使用 PDO 或 mysqli 函数。它们更安全,而且 mysql_* 函数(即将?)被弃用。
  • mysql_* 自 PHP 5.5 起已弃用
  • @Bono 自 PHP 5.5.0 起,该扩展已被弃用。

标签: php mysql arrays


【解决方案1】:

尝试 mysql_num_rows 而不是 count 并删除 mysql_fetch_array

【讨论】:

    【解决方案2】:

    mysql_fetch_array 不返回所有结果的数组,它只返回下一行结果,如果没有更多结果,则返回false。所以count() 返回列数乘以 2(因为数组包含数字和关联条目)。

    使用mysql_num_rows 获取结果中的行数。

    if (mysql_num_rows(mysql_query($peticion))) {
    

    【讨论】:

    • 我们同时发布了我们的答案。
    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多