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 中遇到了一个极端情况。枚举字段的值可以由实际值或允许值列表中的索引来引用。您正在尝试使用0,MySQL 将其解释为列表的索引 0,在内部是空字符串。

例如

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


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

如果您只需要一个字段的 0/1 值,为什么不使用已经是 0/1/null-only 的实际 BIT 字段?对纯数值使用枚举只会遇到这个值与索引的问题。

于 2013-02-11T16:53:25.043 回答