【问题标题】:Error : mysql_fetch_assoc ( Table Field Name ) [duplicate]错误:mysql_fetch_assoc(表字段名)[重复]
【发布时间】:2014-03-19 13:32:15
【问题描述】:

一切正常,突然发生了这样的事情:

PHP 警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在第 17 行的 G:\PleskVhosts\modelcharm.com\httpdocs\core\functions\users.php 中给出

function user_data($user_id) {
    $data = array();
    $user_id = (int)$user_id;

    $func_num_args = func_num_args();
    $func_get_args = func_get_args();

    if ($func_num_args > 1) {
        unset($func_get_args[0]);   

        $fields = '`' . implode('`, `', $func_get_args) . '`';
        $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id"));

        return $data;
    }}

代码有什么问题吗?

【问题讨论】:

  • 是的,$func_get_args 可能是空的。因此字段列表为空。因此mysql有语法错误。您可以通过添加echo mysql_error() 更好地了解正在发生的事情
  • 很多东西。您不检查查询是否成功开始。你也使用过时的 mysql_* 函数。

标签: php mysql database login fetch


【解决方案1】:

这意味着,有一个错误。 这将向您显示详细的错误消息:

$getData = mysql_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id") or die (mysql_error());

$data = mysql_fetch_assoc($getData);                 

【讨论】:

  • 谢谢,这对我有帮助……我在数据库中更改了一个字段名,但没有在 init.php 文件中更改它……这很有帮助
【解决方案2】:

首先避免使用从php 5.5 弃用的mysql_* 函数,并开始使用mysqli_* 函数或PDO

然后避免在 mysql_fetch_assoc() 中使用mysql_query(),因为如果查询失败你会得到错误。始终使用die (mysql_error()) 来查找查询是否已正确执行

所以这样写代码

对于php > 5.2

$con = mysqli_connect("localhost","username","password","DBname");
$query=mysqli_query($con,"SELECT $fields FROM `users` WHERE `user_id` = $user_id") or die (mysqli_error($con));
$data = mysqli_fetch_assoc($query);

php < 5.3

$query=mysql_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id") or die (mysql_error());
$data = mysql_fetch_assoc($query);

【讨论】:

    猜你喜欢
    • 2017-02-08
    • 2012-09-25
    • 1970-01-01
    • 2014-12-07
    • 2011-07-09
    • 2012-07-13
    • 2013-06-11
    • 2019-05-31
    • 2017-08-15
    相关资源
    最近更新 更多