2012-10-16 67 views
0

你好我正在運行一個服務器端數據庫來處理來自android手機的輸入。我有兩個函數來存儲用戶信息和一個來更新他們的位置。php不更新sql數據庫

第二個存儲位置我無法上班。

/** 
* Storing new user 
* returns user details 
*/ 
public function storeUser($name, $email, $password) { 
    $uuid = uniqid('', true); 
    $hash = $this->hashSSHA($password); 
    $encrypted_password = $hash["encrypted"]; // encrypted password 
    $salt = $hash["salt"]; // salt 
    $result = mysql_query("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES('$uuid', '$name', '$email', '$encrypted_password', '$salt', NOW())"); 
    // check for successful store 
    if ($result) { 
     // get user details 
     $uid = mysql_insert_id(); // last inserted id 
     $result = mysql_query("SELECT * FROM users WHERE uid = $uid"); 
     // return user details 
     return mysql_fetch_array($result); 
    } else { 
     return false; 
    } 
} 

    /** 
* Updating a users 
* location 
*/ 
public function updateLocation($email, $location) { 
    $uuid = uniqid('', true); 
    $result = mysql_query("UPDATE users SET location='$location' WHERE email='$email' NOW())"); 

    // check for successful store 
    if ($result) { 
     // get user details 
     $uid = mysql_insert_id(); // last inserted id 
     $result = mysql_query("SELECT * FROM users WHERE email = $email"); 
     // return user details 
     return mysql_fetch_array($result); 
    } else { 
     return false; 
    } 
} 

任何幫助非常感謝。

感謝

+0

您是否在嘗試將這些變量插入數據庫之前用'mysql_real_escape'清理這些變量?這是編寫代碼的一種非常危險的方式。我強烈建議你使用這樣的數據庫抽象層,而不是http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php – Eli

+0

謝謝你的建議。將來我一定會考慮抽象層,但目前它超出了本項目的範圍。 – EHarpham

回答

2

結束 「WHERE email='$email' NOW())」 轉變爲 「created_at='NOW()' WHERE email='$email'

+0

解決了謝謝。 – EHarpham

0

看來你有一個錯誤:在您的SQL

0

您有一個額外的NOW()在看着你的更新查詢$result = mysql_query("UPDATE users SET location='$location' WHERE email='$email' NOW())");你似乎缺少它的一部分。您需要告訴它需要設置爲NOW(),或許updated_at,"UPDATE users SET location='$location', updated_at = NOW() WHERE email='$email'"