以下是代码:
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;
}
}
答案 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')