2013-03-02 132 views
0

我正試圖將數據數組傳遞給更新查詢以更新客戶記錄。然而,由於某種原因,「成功」頁面顯示我的詳細信息已更新,但它們不是。如果我調試和回聲UDPATE查詢沒有更新我的MySql數據庫時出錯

echo implode(', ', $update); 
die(); 

我得到的結果

mem_first_name ='喬希,mem_last_name = '鐵匠',mem_email = '[email protected]',allow_email =「0 '

對我來說這看起來很好。這是我的update_user功能

function update_user($mem_id, $update_data) { 
$update = array(); 
array_walk($update_data, 'array_sanitize'); 

foreach ($update_data as $field=>$data) { 
    $update[] = '`' . $field . '` = \'' . $data . '\''; 
} 

mysql_query("UPDATE `members` SET " . implode(', ', $update) . " WHERE `mem_id` = '$mem_id'") or die(mysql_error()); 
} 

而我的$ update_data陣列

if (isset($_GET['success']) === true && empty($_GET['success']) === true) { 
$message = 'Your details have been updated'; 
} else { 
if (empty($_POST) === false && empty($errors) === true) { 

    $update_data = array(
      'mem_first_name' => $_POST['mem_first_name'], 
      'mem_last_name' => $_POST['mem_last_name'], 
      'mem_email' => $_POST['mem_email'], 
      'allow_email' => ($_POST['allow_email']) ? 1 : 0 
    ); 

    update_user($session_member_id, $update_data); 
    header('Location: settings.php?success'); 
    exit(); 
} else if (empty($errors) === false) { 
    $message = output_errors($errors); 
} 
} 

所以我已經做了,我失去了我的反引號我破滅之後,因此列名不具有反勾

+0

從終端工程執行查詢? – hjpotter92 2013-03-02 11:15:30

+0

整個查詢在執行之前的輸出是什麼? – JamesHalsall 2013-03-02 11:15:33

+0

更好,如果你可以打印執行線之前的查詢? – 2013-03-02 11:16:19

回答

0

這是某種排字錯誤(因此當然不是真正的問題)。
你加入反引號到您的領域

$update[] = '`' . $field . '` 
      ^ here 

但他們在調試出缺席。
所以,你要麼運行或發佈錯誤的代碼,這使得整個問題毫無意義。

+0

我已經運行了上述所有內容,並沒有改變任何內容。我不知道爲什麼這個返回打勾沒有顯示在我的列名上面 – jhetheringt7 2013-03-02 11:25:10

+0

如果我print_r($ update),我得到的反引號,但是一旦我內爆,我失去了他們 – jhetheringt7 2013-03-02 11:27:43

0

檢查與數據庫的連接,以及表字段名稱拼寫,我認爲在這段代碼中沒有問題。

+0

我失去了一旦我崩潰後back ticks列名稱不顯示爲字段名稱 – jhetheringt7 2013-03-02 11:30:30