Reply to Re: Determining whether to INSERT or UPDATE

Your name:

Reply:


Posted by Aaron Gray on 01/02/08 04:34

"Jerry Stuckle" <jstucklex@attglobal.net> wrote in message
news:5rudnadaKo4Im-banZ2dnUVZ_vfinZ2d@comcast.com...
> Aaron Gray wrote:
>> "Jerry Stuckle" <jstucklex@attglobal.net> wrote in message
>> news:JIGdnZeODo3Pn-banZ2dnUVZ_rrinZ2d@comcast.com...
>>> Aaron Gray wrote:
>>>> "Jerry Stuckle" <jstucklex@attglobal.net> wrote in message
>>>> news:RbadnWLvEvb4ZOfanZ2dnUVZ_vXinZ2d@comcast.com...
>>>>> Aaron Gray wrote:
>>>>>> "Jerry Stuckle" <jstucklex@attglobal.net> wrote in message
>>>>>> news:65-dnQNSmtoCaefanZ2dnUVZ_r-vnZ2d@comcast.com...
>>>>>>> Aaron Gray wrote:
>>>>>>>> "Jerry Stuckle" <jstucklex@attglobal.net> wrote in message
>>>>>>>> news:m_Wdnblb4PlxcufanZ2dnUVZ_gWdnZ2d@comcast.com...
>>>>>>>>> Aaron Gray wrote:
>>>>>>>>>> "Rik Wasmus" <luiheidsgoeroe@hotmail.com> wrote in message
>>>>>>>>>> news:op.t392n4xa5bnjuv@metallium.lan...
>>>>>>>>>> On Wed, 02 Jan 2008 01:50:20 +0100, Aaron Gray
>>>>>>>>>> <ang.usenet@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> I have a MySQL table of pages each with a 'title' and 'page'
>>>>>>>>>>> fields.
>>>>>>>>>>>
>>>>>>>>>>> How do I do either an UPDATE if the pages 'title' exists or an
>>>>>>>>>>> INSERT if it
>>>>>>>>>>> does not ?
>>>>>>>>>>>
>>>>>>>>>>> The code I have written does not seem to do the job correctly.
>>>>>>>>>>>
>>>>>>>>>>> $result = mysql_query( "SELECT page FROM pages WHERE title =
>>>>>>>>>>> '" . $title
>>>>>>>>>>> . "';");
>>>>>>>>>>>
>>>>>>>>>>> $row = mysql_fetch_array( $result, MYSQL_ASSOC);
>>>>>>>>>>>
>>>>>>>>>>> if ( isset( $row["title"]) && $row[title] == $title)
>>>>>>>>>>> {
>>>>>>>>>>> $result = mysql_query( "UPDATE pages SET page = '".
>>>>>>>>>>> $page . "' WHERE
>>>>>>>>>>> title = '" .$title . "';");
>>>>>>>>>>> if ($result)
>>>>>>>>>>> mysql_query( "COMMIT;");
>>>>>>>>>>> }
>>>>>>>>>>> else
>>>>>>>>>>> {
>>>>>>>>>>> $result = mysql_query( "INSERT INTO pages SET title ='"
>>>>>>>>>>> . $title .
>>>>>>>>>>> "', page = '" . $page . "';");
>>>>>>>>>>> if ($result)
>>>>>>>>>>> mysql_query( "COMMIT;");
>>>>>>>>>>> };
>>>>>>>>>>>
>>>>>>>>>>> This code is buggy and doing an insert rather than an update.
>>>>>>>>>>> How would you
>>>>>>>>>>> approach this task ?
>>>>>>>>>> It could be done with one easy query, look into ON DUPLICATE
>>>>>>>>>> KEY UPDATE
>>>>>>>>>> syntax, ask in comp.databases.mysql
>>>>>>>>>>
>>>>>>>>>> I need to keep the logic in PHP rather than using SQL.
>>>>>>>>>>
>>>>>>>>>> Aaron
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Why? SQL is the correct place to handle this.
>>>>>>>> I need to know whether I have a new page or not and I need
>>>>>>>> concurrency in the PHP to know whether a page is already being
>>>>>>>> editted and I need to keep a log of transactions.
>>>>>>>>
>>>>>>> OK, if you need to find out if you have a new page or not, you've
>>>>>>> got to query the database to see if it exists. But you've also got
>>>>>>> to be careful, because someone could insert the same page between
>>>>>>> the time you query and the time you insert. Sure, it's a small
>>>>>>> period of time, but it can still happen.
>>>>>>>
>>>>>>> And you can't tell for sure if a page is being edited or not. All
>>>>>>> you can really tell is if it has been edited.
>>>>>>>
>>>>>>>> At this stage in my apps life, prototype phase I prefer to keep
>>>>>>>> this llogic in the PHP code.
>>>>>>>>
>>>>>>>> Aaron
>>>>>>>>
>>>>>>>>
>>>>>>> That's doing it the hard way. Use the tools available to you.
>>>>>> Also for the intended applications programmers who are users of my
>>>>>> app generally do not know SQL but can program in an average
>>>>>> programming language.
>>>>>>
>>>>>> I would like to look at and learn the SQL but not now. I really want
>>>>>> to keep this thing simple at the moment and SQL is not simple
>>>>>> compared to PHP.
>>>>>>
>>>>>> Aaron
>>>>>>
>>>>>>
>>>>>>
>>>>> SQL is much simpler than PHP!
>>>> Its neater and more integral, but I would not say its simpler :)
>>>>
>>>> Aaron
>>>>
>>>>
>>>>
>>> Definitely much simpler. A very limited command set with limited
>>> options. We teach SQL in about a day and a half, as part of our database
>>> courses. PHP alone is 5 days - and I wish we had more time.
>>>
>>> If you're going to be using relational databases, you need to learn SQL.
>>>
>>> But your users don't need to use SQL. I have several sites which use
>>> SQL databases. And none of my customers have to write a single line of
>>> SQL.
>>
>> I am working on an open framework for use by other programmers, end users
>> of the product will not need internal knowledge but application
>> programmers will.
>>
>> Proper relational database programming cannot be taught in less than a
>> week, more like a year if you want to follow Codd.
>>
>> Aaron
>>
>>
>>
>
> I forgot to add. If you're using a SQL database, then the programmers
> will need to know SQL, also. But any decent PHP programmer should have a
> reasonable knowledge of SQL, anyway.
>
> Or, just forget about the database and use flat files. Problem solved.

This thread is a bit OTT for the original question :)

Hopefully theres a hacker at hand to save the day. Otherwise I have to do
some more reading of PHP's ins and outs.

Aaron

[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

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