0

このスクリプトを取得して、「ptb_messages」テーブルの列挙型列「read_message」を更新しようとしていますが、何も実行されません。スクリプトの残りの部分は正常に機能しますが、read_messageを1から0に更新する要求を無視しているだけです。

誰かがどこが間違っているのか教えてもらえますか?ありがとう

<?php 

        session_start();

        include 'includes/_config/connection.php'; 

        $subject = $_POST['subject'];

        $message_id=$_GET['to'];

        $textarea = $_POST['textarea'];

        $query = mysql_query("SELECT content FROM ptb_messages WHERE id='".$message_id."'");

     $results=mysql_fetch_array($query);

     $result=$results['0'];

        if($result && $textarea) {

            $sql = mysql_query("UPDATE ptb_messages SET content ='".addslashes($textarea)."' WHERE id='".$message_id."'"); 

              $sql = mysql_query("UPDATE ptb_messages SET date_sent = LOCALTIME WHERE id='".$message_id."'");


            $query = mysql_query("SELECT suibject FROM ptb_messages WHERE id='".$message_id."'");

            $sql = mysql_query("UPDATE ptb_messages SET subject = IF(subject LIKE '%:reply', subject, CONCAT(subject, ':reply'))  WHERE id='".$message_id."'"); 

            $sql = mysql_query("UPDATE ptb_messages SET read_message = '0' WHERE id=".$message_id.""); 



      $_SESSION['message_sent']="<div class=\"message_sent\"></div>"; 
    header("Location: {$_SERVER['HTTP_REFERER']}#confirm");
        }

        ?>
4

1 に答える 1

1

MySQL でエッジ ケースに遭遇しています。enum フィールドは、実際の値によって参照される値、または許容値のリスト内の INDEX を持つことができます。を使用しようとして0いますが、MySQL はリストのインデックス 0 として解釈しています。これは内部的に空の文字列です。

例えば

 myfield ENUM('one', 'two', 'three')


 myfield = 'two' => 'two'
 myfield = 1 => 'one'
 myfield = 0 => '', not in list, ignore...

フィールドに 0/1 の値が必要な場合は、実際の BIT フィールドを使用しないでください。これは、すでに 0/1/null のみです。純粋な数値に列挙型を使用すると、この値とインデックスの問題が発生します。

于 2013-02-11T16:53:25.043 に答える