2012-05-15 109 views
1

我正在開發一個web應用程序,並且遇到了一個小問題。我在數據庫中有一個表,其中包含以下字段:id,position(公司名稱),username,firstname,lastname。我正在編輯一個edit_user頁面。我有一個主頁列出了所有用戶的姓氏和名字。然後,我可以點擊這些名稱,這會將我帶到與該用戶相對應的edit_user頁面。但是,我在網站上做的更新沒有發送到數據庫(請參閱下面的代碼)。從ID檢索用戶信息

//Inserting updates into database 
     $query = "UPDATE person SET 
      privilege = '{$privilege}', 
      nexus = '{$nexus}', 
      firstname ='{$firstname}', 
      lastname = '{$lastname}'"; 
     $query .=" WHERE id={$personid}"; 
     $result = mysql_query($query,$connection); 
     if (mysql_affected_rows() == 1) { 
      $message = "User was successfully updated"; 
     } else { 
      $message = "User was not updated"; 
      $message .= "<br/>" .mysql_error(); 
     } 

我的預感是,什麼是錯與{PERSONID $},其定義爲:

function find_selected_user() { 
    global $user; 
    if (isset($_GET['personid'])) { 
     $personid = $_GET['personid']; 
     return $personid 
    } else { 
     $user = NULL; 
    } 
} 

(上述功能是應該返回的$用戶的信息的數組) 請幫助 - 我很困難!我相信它是如此簡單,但我一直在考慮它太長了

+0

你可以給var_dump()的$ userid,以確保它實際上有一個值? – Bono

+0

而不是發起查詢,請嘗試echo $ query並檢查您正在創建的查詢。 –

+2

請停止使用古代mysql_ *函數編寫新代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/KJveJ)。相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這裏是一個很好的PDO相關教程](http://goo.gl/vFWnC)。 – PeeHaa

回答

2

你忘了結局;字符的位置:

return $personid 

應該是:

return $personid; 
+0

謝謝,我確實收到了一條錯誤消息,告訴我這一點。它現在已經修復,但同樣的問題仍然存在 – nv39

+0

我最終重寫了頁面。它現在可以工作(我想!)。感謝您的建議! – nv39

2

你能呼應完整$query變量到屏幕或將其保存在一個日誌?

複製此輸出並嘗試使用mysql命令行或phpmyadmin來測試sql查詢。

或者可能是echo mysql_error();以查看是否報告了錯誤。

也許你的{$personid}變量沒有被填充,你認爲它是如何。

+0

嗨,這是一個很好的建議,但我不知道如何執行它(抱歉,對此很新)。你的意思是簡單地添加一個「echo $ query」直接在我的查詢語句?我嘗試過,但沒有任何迴應到網絡上。 (進一步的細節:我點擊所需的用戶編輯 - >帶我到edit_user(具有正確的地址,例如:以edit_user.php?user = 4結尾) - >我輸入我的編輯 - >帶我到一個新的空白edit_user頁面,沒有更新發生在phpmyadmin) – nv39

+0

是回聲$查詢應該顯示它到屏幕。也許它不適合你,因爲它周圍的html代碼在表格中,或者輸出被絕對位置div覆蓋。在顯示到屏幕之前,腳本是否重定向?如果您可以看到$ message變量上輸出的內容,可以將$ query添加到該變量中。 $ message。= $ query; – Apot

+0

我最終重寫了整個事物,現在它確實有效。但是,謝謝你,我在將來調試時會記住這一點 – nv39