2016-03-24 85 views
-1

我得到这个错误:警告:mysql_fetch_assoc()预计参数1是资源,鉴于布尔

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\core\functions\users.php on line 70.

它注册成功,并成功登录;问题是它没有显示我的用户数据,并给我这个错误。我是PHP新手。

这里是我的代码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; 
     } 
} 
    function login($username, $password){ 
     $user_id = user_id_from_username($username); 

     $username = sanitize($username); 
     $password = md5($password); 

     return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username' AND `password`='$password'"), 0)==1) ? $user_id : false; 
} 
function logged_in() { 
    return (isset($_SESSION['user_id'])) ? true : false; 
} 
function user_exists($username) { 


     $username = sanitize($username); 
     return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` ='$username' "), 0) == 1) ? true : false; 
     } 
    function user_active($username) { 
     $username = sanitize($username); 
     return(mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `active` =1"), 0) == 1) ? true : false; 
    } 

而且我register.php

<?php 
    include 'core/init.php'; 
    include 'overall/headerr.php'; 
    if (empty($_POST) === false) { 
    $required_fields = array('username', 'password', 'password_again', 'first_name'); 
    foreach($_POST as $key =>$value) { 
    if(empty($value) && in_array($key, $required_fields) === true) { 
     $errors[] = 'Fields marked with an asterisk required'; 
     break 1; 
    } 
    } 
    if (empty($errors) === true){ 
     if (user_exists($_POST['username']) === true) { 
      $errors[] = 'Sorry, the username \'' . $_POST['username'] . '\' is already taken.'; 
     } 
    if (preg_match("/\\s/", $_POST['username'])== true) { 
     $errors[]='Your username must not contain any spaces.'; 
    } 
     if (strlen($_POST['password']) < 6) { 
      $errors[] = 'Your password must be at least 6 characters'; 
     } 
     if ($_POST['password'] !== $_POST['password_again']) { 
        $errors[] = 'Your password do not match'; 

     } 

     } 
     } 

    ?> 

    <h1>Register</h1> 
    <?php 
    if (isset($_GET['success']) === true && empty ($_GET['success']) === false) { 
     echo 'You\'ve been registered successfully!'; 
    }else{ 
    if (empty($_POST) === false && empty ($errors) === true) { 
    $register_data = array(
    'username' => $_POST['username'], 
    'password' => $_POST['password'], 
    'first_name' => $_POST['first_name'], 
    'contact' => $_POST['contact'], 
    'information' => $_POST['information'] 

回答

0

首先你应该切换到msqlimsql在PHP 5.5.0过时,被删除在PHP 7.0.0

这是一个重复的问题,这里是一个answer,应该帮你

<?PHP 
$sql = 'some query...'; 
$result = mysql_query($q); 

if (! $result){ 
    throw new My_Db_Exception('Database error: ' . mysql_error()); 
} 

while($row = mysql_fetch_assoc($result)){ 
    //handle rows. 
} 

Note the check on (! $result) -- if your $result is a boolean, it's certainly false, and it means there was a database error, meaning your query was probably bad.

下面是从php.net一些额外的资源上msqli_fetch_assoc()

http://php.net/manual/en/mysqli-result.fetch-assoc.php

这里是被废弃

http://php.net/manual/en/function.mysql-fetch-assoc.php

+0

感谢@gmaniac – John

+0

msql_fetch_assoc()的信息你欢迎,高兴它有帮助。如果它解决了你的问题,请接受 – gmaniac

相关问题