2011-04-14 113 views
-3

下面是代码: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; 
    } 
} 
+3

你收到的错误信息是什么? – 2011-04-14 01:46:49

回答

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') 
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