更新枚举值从1到0 mysql?

时间:2013-02-11 16:50:40

标签: mysql

我正在尝试让这个脚本在我的'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");
        }

        ?>

1 个答案:

答案 0 :(得分:1)

你在MySQL中遇到了一个边缘案例。枚举字段的值可以由实际值引用,也可以在允许值列表中引用它们的INDEX。您正在尝试使用0,MySQL将其解释为列表的索引0,其内部为空字符串。

e.g。

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


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

如果您只需要字段的0/1值,为什么不使用实际的BIT字段,该字段已经是0/1 / null?将枚举用于纯数值只会遇到此值-v.s.-索引问题。