【问题标题】:mysql_query -> mysql_fetch_array only returning last input rowmysql_query -> mysql_fetch_array 只返回最后一个输入行
【发布时间】:2015-03-23 10:09:03
【问题描述】:

我正在使用 mysql_query 和 mysql_fetch_array 来返回要在 foreach 循环中使用的值数组。

由于某种原因,当我 print_r 返回的数组时,查询只返回最后输入的行。

我正在做的是:

$query = mysql_query("SELECT * from table_name;");
$returned_array = mysql_fetch_array($query);
print_r($returned_array)

比如说表中有4个值(a、b、c、d),只有最后一个会返回给我,所以我看到的是:Array ( [0] => d )

怎么做我要解决这个问题还是我做错了什么?

【问题讨论】:

  • 您应该看到的是E_DEPRECATED 通知:请不要使用mysql_*,该扩展已在多年前被弃用。学习改用PDOmysqli_*(替换扩展)
  • 正如@EliasVanOotegem 所说,mysql_* 已被弃用,您的代码有一些拼写错误$returned_array - mysql_fetch_array($query); 而不是=,您正在使用-
  • 通常你会把它放在一个while循环中,它会获取行直到它用完
  • 您没有 ORDER BY 子句,因此您不能假设任何顺序。由于您只获取一行,因此它可以是任意行——甚至不是随机行!
  • 当我尝试使用 mysqli 时出现如下错误(因工作而被剥离):警告:mysqli_query() 期望参数 1 为 mysqli,/file 中给出的字符串警告:mysqli_fetch_array () 期望参数 1 为 mysqli_result,/file 中给出的整数

标签: php mysql


【解决方案1】:

如果你想获取所有记录

$query = mysql_query("SELECT * from table_name");
while($returned_array = mysql_fetch_array($query)){
/*.......*/
}

【讨论】:

  • 如果有效,请标记为正确,以便其他人可以毫无困难地得到答案
  • 很好,但这是什么;表示 in ("SELECT * from table_name;");
  • 请保持公平,因为所有用户将来都会将此作为他/她的参考。
  • @vivek 在 SQL 语句的末尾加分号并没有“错误”,只是大多数人都不会这样做。
  • mysql_* 也被弃用了?不是吗?
【解决方案2】:

您必须使用 while 循环。 fetch_array 只返回一行。

$query = mysql_query("SELECT * from table_name;");
while( $returned_array = mysql_fetch_array($query)){
print_r($returned_array); }

顺便说一句使用mysqli。正如 Álvaro G. Vicario 所说,使用 ORDER BY 子句。

典型的mysqli 示例:

$link = mysqli_connect("localhost", "my_user", "my_password", "world");

$query = mysqli_query($link,"SELECT * from table_name;");
while( $returned_array = mysqli_fetch_array($query)){
print_r($returned_array); }

【讨论】:

  • 干杯,太完美了!
  • @swiftie821 检查这个 mysqli 示例
【解决方案3】:

或者您可以使用 mysql_fetch_assoc() 函数来获取结果行作为关联数组。

$query = mysql_query("SELECT * from table_name");
while($returned_array = mysql_fetch_assoc($query)){
     //use your data for each row here like this: echo $returned_array['ID'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-06
    • 2019-08-26
    • 1970-01-01
    • 2018-04-13
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    相关资源
    最近更新 更多