2011-04-14 112 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