Reply to Re: Glitch in php or count() in mysql?

Your name:

Reply:


Posted by Gordon Burditt on 10/22/05 20:06

>I have a PHP script that adds messages to a simple MySQL Database.
>(PHP 5.0.3, MySQL 4.1.1)
>
>One of the fields it stores is msgid.
>The new msgid is a count of all current msgs in the db plus one

If you ever delete a message, this will mess up. It would work
better if you make the new msgid the maximum of the message ids in
the db plus one. This only screws up if you delete the previously
highest msgid.

There is also a possibility of messing up if two copies of the script
running at the same time both do their select, then both do their
inserts.

It's exactly this problem that auto_increment solves.

>$query = 'select count(*) from messagesdb;';
>$result = mysql_query ($query, $conn);
>$msgid = mysql_result ($result, 'count(*)') + 1;
>
>The next message is added using the above msgid.
>For some reason (there are NO other scripts/systems accessing this
>table, it is all on a local testmachine) I now have about 200 messages
>in the system, but some id's occur more than once, up to 4 times.
>
>I cannot explain this behaviour. I know I could avoid the entire issue
>by autonumbering the messages, but still there is something funny going on.
>
>I am wondering, is php messing up, or is this a mysql glitch, or am I
>missing something here ?

If the msgid is supposed to be unique, you should have a unique index
on it.

Gordon L. Burditt

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация