2017-01-16 128 views
0

我下載了JTable PHP演示文件並修改了代碼。下面是我如何做到這一點..JTable PHP更新無法正常工作

enter code here //Prepare jTable 
     $('#PeopleTableContainer').jtable({ 
      title: 'User Maintenance', 
      actions: { 
       listAction: 'PersonActions.php?action=list', 
       createAction: 'PersonActions.php?action=create', 
       updateAction: 'PersonActions.php?action=update', 
       deleteAction: 'PersonActions.php?action=delete' 
      }, 
      fields: { 
       strUsrName: { 
        key: true, 
        create: false, 
        edit: false, 
        list: true, 
        title: 'UserName' 
       }, 
       strUsrFName: { 
        title: 'FirstName', 
        width: '10%' 
       }, 
       strUsrMName: { 
        title: 'MiddleName', 
        width: '10%' 
       }, 
       dtmUsrCreated: { 
        title: 'Record date', 
        width: '30%', 
        type: 'date', 
        create: false, 
        edit: false 
       } 
      } 
     }); 

這是我的查詢...

//Updating a record (updateAction) 
else if($_GET["action"] == "update") 
{ 
    //Update record in database 
    $result = mysql_query("UPDATE tbluser SET strUsrFName = '" . $_POST["strUsrFName"] . "', strUsrMName = " . $_POST["strUsrMName"] . " WHERE strUsrName = " . $_POST["strUsrName"] . ";") or die('ERROR: '.mysql_error()); 

    //Return result to jTable 
    $jTableResult = array(); 
    $jTableResult['Result'] = "OK"; 
    print json_encode($jTableResult); 
} 

我的主要問題是:當我刪除了模具(),更新表上,但它的數據不更新數據庫中的數據,所以我猜錯誤是在查詢中,或者在主鍵中。有人能幫助我嗎?

+0

對於所有其餘的變量,您需要引號,如strUsrFName,因爲它們是字符串。編輯:你不應該再使用mysql,使用mysqli或PDO。 –

+0

我不明白。你是什​​麼意思我需要報價?你能解釋更多嗎? – PoorGrammer

+0

查看我的詳細解答。 –

回答

1

您的查詢語句寫得不正確。您需要使用引號來確保將字符串值傳遞給非數字的列。你的查詢應該是這樣的:

$result = mysql_query("UPDATE tbluser SET strUsrFName = '" . $_POST["strUsrFName"] . "', strUsrMName = '" . $_POST["strUsrMName"] . "' WHERE strUsrName = '" . $_POST["strUsrName"] . "';") or die('ERROR: '.mysql_error()); 

正如我在我的評論中所說的,不要再使用mysql_query了。它已被棄用並暴露給sql注入。 如果您使用prepared statements您沒有報價問題了。

$sql = "UPDATE tbluser SET strUsrFName = :strUsrFName, strUsrMName = :strUsrMName WHERE strUsrName = :strUsrName;"; 
$sth = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$sth->execute(array(":strUsrFName" => $_POST["strUsrFName"], ":strUsrMName" => $_POST["strUsrMName"], ":strUsrName" => $_POST["strUsrName"])); 
+0

謝謝。我只是切換到PDO,它的工作。起初,我試圖切換到Mysqli,但它仍然不起作用,但是當我切換到PDO時,我不知道,但它現在起作用。非常感謝。 – PoorGrammer