2015-09-15 36 views
3

我有一個SQL語句應該更新我的數據庫中的記錄。無論執行什麼PHP更新展示的成功消息

該聲明起作用,但會在按鈕被擊中之前顯示成功消息。這意味着總是顯示成功消息。另外,如果您單擊某個記錄進行更新,並且您決定不想更新任何內容,並單擊取消按鈕或在另一個鏈接上關閉該頁面,則會使用空白輸入更新該記錄。

這裏是我的代碼:

try { 

    $conn = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password')); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $job_id = $_GET['job_id']; 

    $jobs = DB::getInstance()->query("SELECT * FROM jobs WHERE job_id=$job_id"); 

    $job_title = isset($_POST['job_title']) ? $_POST['job_title'] : ''; 
    $date = isset($_POST['date']) ? $_POST['date'] : ''; 
    $location = isset($_POST['location']) ? $_POST['location'] : ''; 
    $type = isset($_POST['type']) ? $_POST['type'] : ''; 
    $description = isset($_POST['description']) ? $_POST['description'] : ''; 
    $education = isset($_POST['education']) ? $_POST['education'] : ''; 
    $experience = isset($_POST['experience']) ? $_POST['experience'] : ''; 
    $competencies = isset($_POST['competencies']) ? $_POST['competencies'] : ''; 
    $how_apply = isset($_POST['how_apply']) ? $_POST['how_apply'] : ''; 

    $sql = "UPDATE jobs SET job_title='$job_title', date='$date', location='$location', type='$type', description='$description', education='$education', experience='$experience', competencies='$competencies', how_apply='$how_apply' WHERE job_id=$job_id"; 
    $result = $conn->prepare($sql); 
    $result->execute(); 

    echo $result->rowCount() . ' record updated successfully'; 
    Redirect::to('manage_jobs.php'); 

} catch (PDOException $e) { 
    echo $sql . '<br />' . $e->getMessage(); 
} 

此外,如果查詢是所謂成功的,它應該給你重定向回列表中,如果記錄,但是,只要你打開記錄,然後單擊更新鏈接,它重新導向回來,但它用空白值替換當前數據,甚至沒有給我機會更新任何東西。它不打開更新表單。

+1

'Redirect' =='header('Location:')'?? –

回答

2

你應該如果

if (isset($_POST['job_title'])) { 
    //Your entire code that you posted 
} 

包裝你的代碼中的你應該預先compilate所有的投入,否則,這將填補你空輸入。

+0

太棒了,謝謝。 – Deon