2017-01-16 18 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

関連する問題