2011-07-05 17 views
0
<?php 

    require('dbconnect.php'); 

    $indexno = $_POST['indexno']; 
    $cevap = $_POST['cevap']; 
    $cevapdate = gmdate("Y-m-d\TH:i:s\Z"); 
    $query = "UPDATE soru 
       SET cevap = '$cevap', 
        cevapdate = '$cevapdate' 
      WHERE `index` = '$indexno'"; 

$link = mysql_query($query); 
if(!$link) { 
    die('not worked: ' . mysql_error()); 
} else { 
    mysql_close($con);  
    echo 'worked'; 
} 

?> 

このPHPコードの結果は「作業済み」です。データベースに変更はありません。物事は、インデックスidによって行のcevapとcevapdateフィールドを更新しようとしています。mysql update、コンピュータは動作しますが、データベースに変更はありません。

+0

コミットが必要ですか? – Randy

+0

'index'の引用符はありません。それを削除してみてください – Balanivash

+0

フィールド名は引用符で囲むべきではありません。 'WHERE'ステートメントの" index "フィールドでそれらを削除してみてください。 **注意:安全性の理由から、SQLクエリでユーザ入力を使用する場合は、mysql_real_escape_stringを使用するべきです。** –

答えて

0

indexからシングルクォートを削除する必要があります。クエリを書くときには、カラム名の前後に一重引用符を置くべきではありません。

$query = "UPDATE soru SET cevap = '$cevap', cevapdate = '$cevapdate' WHERE index = '$indexno'"; 
+0

そのように動作していない、私はその方法を試みた、それは私にMySQLのエラーを与えた。このコードではエラーは出ませんが、データベースの変更が表示されません。 – user552828

+0

実際には、このクエリを実行するときにエラーが発生した場合は、テーブルの 'index'フィールドに引用符を使用しないでください。 – Balanivash

+0

@ user552828:エラーとは何ですか?また、 '$ _POST ['indexno']'と '$ _POST ['cevap']'の値を表示してみてください。 –

0

あなたがバッククォートではなく、単一引用符を使用して行/テーブルをエスケープする必要があります - あなたのクエリをこのように書きます。

$query = "UPDATE `soru` 
    SET `cevap` = '$cevap', `cevapdate` = '$cevapdate' 
    WHERE `index` = '$indexno'"; 

また、あなたはSQL injectionsを防ぐために、ユーザー入力をエスケープする必要があります。

+0

が必要です。 – MacMac

+0

あなたは別の場所で間違いをしている必要があります。間違ったファイルを編集しているのかもしれません。上に貼り付けたコードが正しい場合は、エラーが発生している可能性があります。それにもかかわらず、今でもうまくいくはずです。データベースに 'index' = '$ indexno'というエントリがありますか?おそらく '$ indexno'には、あなたが思うものは含まれていないでしょう。 – kba

+0

あなたはバックティックを使用する必要はありません。 –

関連する問題