将值插入数据库时​​出现PHP错误

时间:2011-04-14 01:45:29

标签: php

以下是代码:

function user_register($user) {

    $link = db_connect();
    $query = sprintf('INSERT INTO users(user_name, user_password, user_email, display_name, register_date, active_date, user_reputation, user_status)
        VALUES("%s", "%s", "%s", "%s", "%s", "%s", %d, %d)',
        mysql_real_escape_string($user['username']),
        mysql_real_escape_string(md5($user['password'])),
        mysql_real_escape_string($user['email']),
        mysql_real_escape_string($user['name']),
        mysql_real_escape_string(get_current_time()),
        mysql_real_escape_string(get_current_time()),
        1,
        1);

    $result = mysql_query($query) or die();
    $num_rows = mysql_num_rows($result);

    mysql_free_result($result);
    mysql_close($link);
    if ( $num_rows == 1 ) {
        return true;
    }
    else {
        return false;
    }
}

2 个答案:

答案 0 :(得分:2)

由于你没有指定你得到的错误,我只是猜测mysql_num_rows不喜欢你传递一个布尔值而不是资源。为此,请阅读手册:

  

对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()成功时返回TRUE或错误时返回FALSE

     

使用mysql_num_rows()查找为SELECT语句返回的行数,或使用 mysql_affected_rows()查找DELETE,INSERT,REPLACE或UPDATE语句影响的行数。

http://php.net/mysql_query
http://php.net/mysql_affected_rows

您也不需要使用mysql_free_result,因为您没有获得任何结果,只需要布尔true / false

答案 1 :(得分:1)

将查询中的双引号更改为单引号:

INSERT INTO users(user_name, user_password, user_email, display_name, register_date, active_date, user_reputation, user_status)
    VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%d', '%d')