|
Posted by Edward Vermillion on 10/04/42 11:23
Martin van den Berg wrote:
> I have this piece of php-code which inserts data into a database.
> Before inserting it must verify if the data is unique. The php code
> looks something like:
>
> $query = "SELECT id FROM mytable WHERE bla LIKE " . $x .";
> $rows = execute( $query )
> if ( $rows == 0 )
> {
> /* some more processing */
> $query = "INSERT INTO mytable ...... etc etc
> execute( $query )
> }
>
> Now here is the problem: when the user enters the page, and directly
> refreshes the record is inserted twice.... Is is possible that both
> requests are processed simulatiounsly by the server (apache on linux)?
> And can I add something like a critical section or semaphore to
> overcome this problem.
>
> Thanx,
>
> Martin
>
It's my understanding that a SELECT has a higher priority than an INSERT
on most MySQL setups.
I've ran into this problem on a site I hobby-code on also. It's my guess
that the write isn't hitting the DB in time for the second read to pick
it up, but that's a guess. As far as what to do about it if that's the
problem, I'll let someone else come up with that answer. ;) It's not
*that* critical in my app and it doesn't happen often enough to be a
real problem for me, but I would like to know if there's a way around it.
Navigation:
[Reply to this message]
|