English 中文(简体)
Mysql If问题
原标题:Mysql If question
  • 时间:2011-05-26 19:35:51
  •  标签:
  • php
  • mysql
  • sql

I am making a chatbox IM.
I have a table where I want to update if the user closes the window, meaning he has viewed the messages his friend has sent him.
When this happens, each conversation has a unique id so I find messages with that id and set the viewed column equal to the users name.

However if the other user also closes the window I would like to change the viewed column to both for all the messages so none of those messages pops up for either user. (by default the viewed column is equal to 0).
What I want is a query that just finds all the messages with the convo_id and if that message is already viewed by another user meaning viewed!=0 then it is set to both else it is set to the user closing the box.

我有一个查询,但它不起作用,因为我没有完全理解语法。

只是想知道是否有人能纠正它或提出一些建议

$sql = "UPDATE chatbox IF (viewed!=?) THEN
        SET viewed=? WHERE convo_id=?
        ELSE 
        SET viewed=? WHERE convo_id=?";
$stmt18 = $conn->prepare($sql);
$result = $stmt18->execute(array(0,$receiver,$convo_id, both ,$convo_id));
最佳回答

您将需要使用case语句:

update catbox
set viewed = case when viewed = ? THEN ? else ? end
where convo_id = ?
问题回答

我建议您创建第二个表(也许称为视图)来记录这些信息。当关闭事件发生时,在表中插入一行,其中包含消息id和用户名。

这样可以简化查询,避免在消息表中创建混淆的数据。





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签