【问题标题】:Fetch only one row in PHP/MySQL [duplicate]在 PHP/MySQL 中仅获取一行 [重复]
【发布时间】:2012-11-27 07:25:29
【问题描述】:

可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

这里是一个简单的问题。

我有一个 SELECT 查询

SELECT FROM friendzone WHERE ID = '$editID'"

我确信这只会给我一行结果,因为 ID 不能在我的数据库中重复。

如何访问列值?

$row = mysql_fetch_array($query);

我认为这没用,因为我不必制作任何数组。我只有一行!

如果我不把它放到一个While cicle中,并尝试做例如

.$row['ID'].

我明白了:

mysql_fetch_array() expects parameter 1 to be resource, boolean given

提前谢谢大家。

【问题讨论】:

  • 您是否要选择具有特定 ID 的行?如果是这样,您希望它始终选择该行还是希望它动态完成?
  • 您的 SELECT 语句无效 - 您没有指定列或 SELECT * 您的查询失败,并且您没有进行任何错误检查。
  • 我觉得自己好蠢。谢谢迈克尔。

标签: php mysql database fetch


【解决方案1】:

Please, don't use mysql_* functions in new code。它们不再被维护,并且 deprecation process 已经开始了。见 red box?改为了解prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial.

尝试:

$query = mysql_query("SELECT * FROM friendzone WHERE ID = '$editID'");
$row = mysql_fetch_array($query);

print_r($row);

MySQLi 代码:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli('host', 'username', 'password', 'database');
$stmt = $conn->prepare("SELECT * FROM friendzone WHERE ID = ?");
$stmt->bind_param("s", $editID);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();

print_r($row);

【讨论】:

  • 显然 SQL 查询是使用您发布的代码完成的
  • +1。还请提供mysqli和/或PDO代码来做,因为没有理由不做。
  • 谢谢!我选择了 MySQLi 并现在使用它 :)
【解决方案2】:

您的$query 可能等于false,因为出现问题,请尝试mysql_error() 看看有什么问题。

还有两个小建议:

  1. 最好使用PDO od mysqli,因为 mysql_* 函数已被弃用。

  2. 在将值放入 SQL 字符串之前,至少使用 mysql_real_escape_string() 转义该值

【讨论】:

    【解决方案3】:

    由于我不知道您尝试选择的一般语法选择是哪些列

    "SELECT column1, column2, column3 FROM friendzone WHERE ID ='$editID'"
    

    或者如果您想选择所有列,只需键入

    "SELECT * FROM friendzone WHERE ID = '$editID'"
    

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 2016-05-27
      • 1970-01-01
      • 2015-06-13
      • 2018-02-09
      • 1970-01-01
      相关资源
      最近更新 更多