Slashdot Mirror


Core Web Application Development with PHP & MySQL

jsuda writes "Core Web Application Development with PHP and MySQL is an intermediate to advanced-level guide for programmers and developers. It bills itself as >everything one needs to know about building robust database applications. That is a bit of puffery but this is a comprehensive practical guide for designing and building production-quality, database-enabled applications." Read the rest of John's review. Core Web Application Development with PHP & MySQL author Marc Wandschneider pages 912 publisher Pearson Education rating 8 reviewer John Suda ISBN 0131867164 summary Fine strategic overview

The author is an open-source platform expert and software developer. He comes from a background of working with standard desktop Windows-based applications and made the transition to building dynamic web applications. His experience in making the transition informs this book as a comprehensive explanation of how to use the various technologies that go into writing web applications. For those making similar transitions, this is a very fine presentation done by a thoughtful, systematic designer. For those already busy in the PHP/MySQL area, the advanced level of instruction is likely to be valuable.

The emphasis is on open-source applications, particularly PHP5 and MySQL in an XHTML/Javascript environment. But, beyond technologies, the author's focus is on the strategies and systematic approach one needs to design and implement successful web applications. He writes for an advanced audience which is already basically familiar with programming and XHTML. Those writing or planning dynamic web applications will benefit most from the book.

There are 33 chapters in five parts - basics of PHP, database basics, planning web applications, implementation, and sample projects. There are three appendices covering installation and configuration of PHP, MySQL, and other related open-source applications like Apache, a set of charts of database function equivalents among the leading database types - MySQL, Oracle, PostgreSQL, Microsoft SQL Server, and a short list of recommended reading.

This is a large format book of 912 pages, including index. My reviewer's copy is a prepublication version containing grayscale graphics and much white space, especially around the code snippets, making reading easy and comfortable. Although the material is high-level and technical, the writing seems light and casual. Wandschneider's writing style flows easily, never bogs down even with technical details, and the book reads much faster than one might expect.

Although the best part of the book contains the three start-to-finish sample projects at the end - a calendar system, weblog engine, and e-commerce store, the lead-in chapters are nicely done, too. Chapters 1 and 2 are about getting started in PHP. There is a brief comparison to perl and C++, but the bulk is about PHP terminology and programming concepts. Much is made of PHP5's new object-oriented features, but the discussions of that here (and in Chapter 4) was about the only parts which I feel needed more clarity - the rest of the chapters are very clearly stated and contain plenty of good examples.

Chapters 3 - 7 continue with scripting concepts like functions, classes, arrays, strings and characters. The discussion is not designed to instruct comprehensively about PHP itself but works on a higher level of showing how PHP interacts with MySQL and other technologies on an overall basis. You can get detailed PHP coding instructions elsewhere. Chapter 6 contains an unusually good discussion of character sets, usable for global applications, and provides instructions on configuring Unicode and multi-byte support for high-level applications.

Part 2, Chapters 8 - 12, take the same approach to MySQL and databases in general. They include discussion of basic terminology and concepts, designing and creating databases, storing and retrieving data, PHP-to-database connectivity, and advanced topics, like use of "transactions" and advanced querying.

Part 3, Chapters 13 - 17, deal with the server-side matters. Again, the level of presentation is not on comprehensive details of PHP, MySQL, and web services, but present a comprehensive overview to guide planning, design, and implementation. Here the author states overall design considerations of a website noting how to incorporate CSS, HTML, code libraries, user interfaces, and web services into a working dynamic website.

User management and security concerns are noted throughout the book and Chapters 14 - 17 deal specifically with validation, and software and hardware security, including tips on how to secure your server. These passages on security are some of the better and clearest written I've experienced in this area.

Part IV continues the systematic approach to website construction discussing error handling, debugging, cookies, and sessions (again some of the clearest explanations I've read), authorization, and data validation with regular expressions. Chapter 21 is entirely about globalization and localization that is, dealing with the fact that the Internet is global and that there is a need to deal with foreign language sets. There are tips on how to determine users' locations and how to script to account for different language sets, including Unicode.

Chapters 23 and 27 are about XML and are especially useful now that XML and XHTML are becoming the reigning protocols of dynamic web activity. There is an extensive sample of using XML to work with the Google API. Using XML with PHP is an advanced topic and it is only generally covered here, together with XML web services and SOAP. Other chapters cover the use of extensions to PHP, like PEAR, developing a coding "style", creating test suites, configuring PHP.ini, and more. The three working examples are extensively commented and contain complete code examples.

The book comes with a comparison CD-ROM containing all of the sample code, and versions of PHP5, MySQL, and Apache HTTP server."

You can purchase Core Web Application Development with Php & MySQL from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

149 comments

  1. Greater than everything! by Anonymous Coward · · Score: 1, Funny

    Must take up a lot of shelf space.

  2. What, no AJAX? by WVDominick · · Score: 5, Insightful

    An honest question for anybody to answer. Do most people still learn by picking up a 900+ page book rather than learning from example? I find most technical books extremely difficult to finish so I very rarely attempt to read them.

    1. Re:What, no AJAX? by netkid91 · · Score: 0

      They must be written in PERL.

      --
      NO~, I read Slashdot because I think it's stupid.....
    2. Re:What, no AJAX? by op12 · · Score: 4, Insightful

      Learning from examples and code snippets is one thing, but learning to code robustly is another. I think that is the emphasis here. Plus, as mentioned, "Although the best part of the book contains the three start-to-finish sample projects at the end - a calendar system, weblog engine, and e-commerce store, the lead-in chapters are nicely done, too...The three working examples are extensively commented and contain complete code examples."

    3. Re:What, no AJAX? by WVDominick · · Score: 3, Informative

      While I agree with you that it will take a while to become an expert coder by just learning from examples, but the same can be said for reading multiple 900 page books on the subject. Maybe it's just me, but I don't enjoy trudging through tons of text when I can just open up some code and go to work.

    4. Re:What, no AJAX? by Anonymous Coward · · Score: 2, Insightful

      Here's a tip: skip stuff you already know

      Most books like this are at least 1/3rd boilerplate. Learn to skim.

    5. Re:What, no AJAX? by WVDominick · · Score: 1

      That I do, but is a book about programming really necessary with the abundant information out there on the internet? I would also like to clarify that I'm sure this is a good book and some people may find it very useful.

    6. Re:What, no AJAX? by jacksonj04 · · Score: 1

      I use a book for some things (Such as date widgets), and to pick up best practices, but learn how to build applications from ripping existing applications apart.

      I think it's down to the individual. Some need to see the whole thing laid out to see how it works, others can just frig existing things until they fit. But never underestimate the value of a reference book.

      --
      How many people can read hex if only you and dead people can read hex?
    7. Re:What, no AJAX? by WVDominick · · Score: 1

      I agree completely about using a book as a reference. I still use the internet as my first source though.

    8. Re:What, no AJAX? by Anonymous Coward · · Score: 0

      The best place to learn to code is nowhere near a computer.

      Pick up a piece of paper and a pencil, and start coding, it works wonders for your understanding.

    9. Re:What, no AJAX? by WVDominick · · Score: 1

      What is this "paper" and "pencil" you speak of?

    10. Re:What, no AJAX? by leonmergen · · Score: 1

      Yes. As soon as you start digging into more advanced topics, books can really help. When you're doing things like PHP, which is practiced by lots (millions?) of people out there, I personally feel that a book can be handy for people that want one central place of a lot of information, but not necessary to learn to master the language properly...

      --
      - Leon Mergen
      http://www.solatis.com
    11. Re:What, no AJAX? by Anonymous Coward · · Score: 3, Insightful

      I don't enjoy trudging through tons of text when I can just open up some code and go to work.

      But, as soon as the code stops working, you're stuck because you don't really understand what the code does. IMHO, this is just an instance of the "cargo-cult programming" problem. Yes, you can copy/paste a great application within the hour, but you lose maintainability and scalability, mainly because you have no idea what's happening behind the scenes.

      Nothing really substitutes a good understanding of what you're doing. For that, you need to spend a little more time and energy than just copy/pasting code.

    12. Re:What, no AJAX? by JoeCommodore · · Score: 1
      I must be a hot programmer then, because I use a PEN!

      Here is a related axiom: "Programming is debugging a blank sheet of paper."

      --
      "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
    13. Re:What, no AJAX? by Parham · · Score: 1

      I think your comment is especially true when it comes to PHP and MySQL. The websites for PHP and MySQL have a massive amount of information and documentation which could replace several books written for them already. The comments in their documentation on the two websites posted by users is even more useful:

      MySQL documentation
      PHP documentation

    14. Re:What, no AJAX? by Q2Serpent · · Score: 1

      Why do you need a book for that? I tend to use other resources precisely because I can dive in as far as I want, past what any single book would contain, in order to understand anything I come across that doesn't quite make sense yet. It's much cheaper to get this information from places other than one-book-per-technology.

    15. Re:What, no AJAX? by JulesLt · · Score: 1

      To quote someone from a recent training course I went on 'Learning by example is good, but sometimes it's better to learn by reading. For instance, if the sign says Alligator Infested Waters you're better off learning from other people's experience'. Personally, yes, I still buy lots of technical books, and find a lot that is useful in them, saving me time from hitting the same problem. I don't think there's been one I've finished, but I've certainly finished chapters on topics I was interested in and weak.
      I also use Google to do the same. Strange thing is a lot of people in my team turn to me to answer their queries.
      I think there may be a link.

      Actually - I will say that I prefer to initially learn by example - i.e. if I was picking up a new language I'd code by example to get a feel for the tools - but once I get going, give me the big fat technical manual written by someone whose been through the pain and can warn you about some of the peculiarities.

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
  3. Debugger by truz24 · · Score: 3, Interesting

    Does anyone know of a good debugger for PHP applications? I'd like to be able to step through the execution of a php script...

    1. Re:Debugger by Anonymous Coward · · Score: 0

      ZEND

    2. Re:Debugger by warewolfe · · Score: 5, Informative

      Try phpeclipse which works within the Eclipse IDE. for info check here http://www.phpeclipse.de/tiki-view_articles.php/

      --
      Then again, I could be wrong.
    3. Re:Debugger by Anonymous Coward · · Score: 0

      I've been using phpEclipse and the debugger for nearly a year now.

      My review would be mixed. It certainly does help me debug, but not without issues...

      I have just upgraded to a new version, and I haven't had a chance to see of those issues are still present, so I won't comment on them at this point.

    4. Re:Debugger by yahyamf · · Score: 2, Informative

      NuSphere's Phped is pretty good. It's not free though. It also has an excellent built in profiler that shows how much time each line of code takes to execute.

    5. Re:Debugger by heavy+snowfall · · Score: 1

      Zend studio. Try the trial and you'll fall in love.. :) It's got live syntax checking, great, uncluttered debugging etc.. But I don't think it can connect to mysql. That kinda sucks.

    6. Re:Debugger by nervouscat · · Score: 2, Informative

      I second that suggestion! Zend Studio is fastastic! You can step through PHP code and examine the values of variables. Not to mention it has a really nice editor. Definitely check it out. http://www.zend.com/store/products/zend-studio/

    7. Re:Debugger by trompete · · Score: 1

      Third!!! God I love Zend studio. It's like Visual Studio is to C++.

    8. Re:Debugger by psyon1 · · Score: 1

      Is that supposed to mean its good? I really don't like Visual Studio personally. I own a license for it, but I primarily use the command line tools.

    9. Re:Debugger by agm · · Score: 1

      I find nothing beats the "echo" function for debugging PHP applications.

    10. Re:Debugger by u235meltdown · · Score: 1

      jEdit with its PHP Parser and FTP plugins works quite well it also has a MySQL plugin, but I don't bother with that.

    11. Re:Debugger by heavy+snowfall · · Score: 1

      Is there anything for C for linux that is as good as zend studio is for php? (tried eclipse, didn't like it at all, using gedit and nano at the moment...) Zend studio is a beauty and the programmers (+interface designers/clutter removers) ought to be proud of themselves.

    12. Re:Debugger by malchus842 · · Score: 1

      I wrote my own simple debugging class for php. It's only about 90 lines long, and borrowed some ideas from other debugging scripts I had seen various places. It can dump objects, arrays and scalar values, and does so at the bottom of the page. Basically, each object knows how to output it's own data for debugging purposes, and the class just calls a specific method on the object to output the data. It can even email 'critical' events to an administrator, if you run it on 'live' code (which I don't, generally). I've put the class on my website: http://adamsemail.net/nh/debug_class.html.

      Call it with Debugger::debug(item,'tag') for each element you want to display (tag must be unique on each page), and then Debuger::output() at the bottom of the page to be debugged.

      It's completely free, do what you want with it

    13. Re:Debugger by trompete · · Score: 1

      Not sure. We do all of our development on windows. Sorry.

    14. Re:Debugger by Anonymous Coward · · Score: 0

      if you don't mind command line. GDB allows you to step through your code and print out very informative values of variables. Many other features as well. Just check out man gdb. I am not sure if there is a GUI version of it though

  4. Multi-tier by Spy+der+Mann · · Score: 5, Insightful

    I can't understand how a book which (according to the review) doesn't have a chapter dedicated to the concept of "multi-tier programming", can have the presumption to say it's '>everything you need'. Heck, it doesn't even MENTION templates.

    As some of you know, multi-tier applications have (at least) 3 tiers: Database, business-logic, and interface. Java guys know this better: Model-View-Controller.

    I have implemented for my webapps an MVC framework, and maintaining them or modifying them is a piece of cake. It's so easy i get bored with it sometimes.
    In comparison, recently I've had to adapt the OSCommerce 2.2MS2 (built in PHP) for one of our clients' store. Every single php file in it has database, business-logic and interface ALL MIXED. The only separation they have is wrappers around SQL functions (that's not true separation, but a mockery). Maintaining it is a LIVING NIGHTMARE.

    So please do yourselves a favor: Study the MVC approach and implement an MVC framework in PHP. You can use any templating library you can find. (for database, i use an adapted version of phplib's sql library). This alone has saved me not hours, but weeks of work, and is worth ">everything" you could learn from that book.

    1. Re:Multi-tier by Anonymous Coward · · Score: 0

      So it's your way or the highway?

    2. Re:Multi-tier by Anonymous Coward · · Score: 0

      Please. The fact that you believe that implementing an MVC pattern to organize your UI layer equates to building a "multi-tier app" shows that you actually have no idea how to implement a true n-tiered application. Maybe you could spend some time getting a clue when you're so bored with the ease of implementing MVC and let the people that know what they're talking about reply to this review.

    3. Re:Multi-tier by MrCoke · · Score: 1

      Agreed. That's the way most database applications should be build if maintenance is high on the priority list.

      Also: PLEASE MAKE USE OF GOOD DATABASE CONCEPTS. Foreign keys are there for a reason you know and they become really important if the application reaches a particular size. Study triggers and stored procedures. Look at the SQL execution path for hints to optimize the SQL query.

      And please, MAKE USE OF GOOD DATABASE DESIGN CONCEPTS. It's amazing howmuch redundancy is build in present database applications wich is not good for performance or maintainability.

    4. Re:Multi-tier by Anonymous Coward · · Score: 0

      Or just use Ruby On Rails http://www.rubyonrails.com/

    5. Re:Multi-tier by temojen · · Score: 1, Flamebait

      So what you're saying is... Don't use MySQL.

    6. Re:Multi-tier by MrCoke · · Score: 1

      I was referring to some good DB practices, nothing more.

      People should make their own opinions, not repeat others.

      PS: I'm a DB2 fan

    7. Re:Multi-tier by temojen · · Score: 2, Interesting

      Fun things like (enforced) foreign keys, triggers, stored procedures, query analysis, etc aren't easy on any but the latest MySQL incarnations. But it helps to have taken a course or two in databases (mine used DB2, but I prefer PostgreSQL now as I'm now more familiar with it) so that you know that these (plus normalization) are good ideas.

    8. Re:Multi-tier by julesh · · Score: 2, Informative

      So what you're saying is... Don't use MySQL.

      I'm not sure what you're talking about.

    9. Re:Multi-tier by curunir · · Score: 1

      Study triggers and stored procedures.

      Eww...No. Don't do this. Stored Proc's and especially triggers can become a maintainability nightmare. Putting logic into the database that goes beyond maintaining the referential integrity of data should only be done when you know that you need to do it for performance reasons. Otherwise, do it in the core language you're using to develop your site. This can save a lot of hassle and keep your app much more portable. My usual approach is to develop all logic outside of the database and then only write stored proc's for stuff where the performance isn't good enough. I find that the number of stored proc's that I end up having to write is at least half as many as I thought I'd need when I started and usually quite a bit less than that.

      BTW...I agree with you about the foreign keys...it's absolutely essential to start with a fully-normalized schema and then de-normalize only when absolutely necessary to get the performance you need (which is a really rare case).

      --
      "Don't blame me, I voted for Kodos!"
    10. Re:Multi-tier by Anonymous Coward · · Score: 0

      I'm looking for some good reading material on MVC with PHP. Does anyone have any good material for someone who would like to program PHP this way?

  5. Help is at hand by adnonsense · · Score: 2, Informative
  6. Re:Oxymoron by Gnight · · Score: 1

    Oh phooey.

    MySQL is fine for the vast majority of applications out there. You can build robust database applications with it, no problem. Now, if what you are really trying to say is that there's better things out there, then sure I'll agree with you. But to just say that you can't get robustness out of MySQL... I don't think that's accurate at all.

  7. Core Web Development by ackthpt · · Score: 3, Insightful
    Should include a chapter related to when to roll out changes and when not to.

    Ebay changes their site, a week before Christmas. These people are stupid. These people are astoundingly stupid. If you looked up STUPID in the dictionary it wouldn't have the eBay logo, but direct you to an encyclopedia which has more space to go on about their profound acts of stupidity, when they've been stupid, how they've been stupid and how they've often failed to repeal their stupidity or even learn from it.

    They aren't the only guilty ones. Less is More and too often I've had to deal with sites poorly constructed, as replacedments for sites which worked quite well.

    Probably more along the lines of programing and some Gee-Whizzy things, but every web programming book should dedicate a chapter on when and how to make changes and common pitfalls to avoid.

    --

    A feeling of having made the same mistake before: Deja Foobar
    1. Re:Core Web Development by arudloff · · Score: 4, Informative

      Christmas is by far e-bay's lowest traffic of the year.. There's a bunch of charts showing the huge drop off, year after year, on the number of auctions starting about a week before christmas..

      If someone has the link, post it? I'll see if I can dig it up.

    2. Re:Core Web Development by ackthpt · · Score: 1
      Christmas is by far e-bay's lowest traffic of the year.. There's a bunch of charts showing the huge drop off, year after year, on the number of auctions starting about a week before christmas..

      If someone has the link, post it? I'll see if I can dig it up.

      I'd like to see that. With all the time off work I imagine people spend more time online, shopping. I've moved a few things and find I tend to buy quite a bit over the period (often more than I should :-)

      I think their biggest slack time is during the summer. Whenever I've listed items then I find sales to be very slow.

      --

      A feeling of having made the same mistake before: Deja Foobar
    3. Re:Core Web Development by mysqlrocks · · Score: 1

      Ebay changes their site, a week before Christmas. These people are stupid.

      At a company the size of Ebay, typically web developers don't call the shots on when the changes will occur. This books is for web developers, not managers.

    4. Re:Core Web Development by ackthpt · · Score: 1
      At a company the size of Ebay, typically web developers don't call the shots on when the changes will occur. This books is for web developers, not managers.

      Sure, but if managers are so stupid as to propose changes at critical junctures, where are they going to learn if not from the programmers who say, "You really can't mean this. You can't really mean to roll out big changes during the biggest commercial period of the year and when a lot of staff will be on vacation. You really can't be serious." Or has the workplace become more Dilbert-like at eBay?

      --

      A feeling of having made the same mistake before: Deja Foobar
    5. Re:Core Web Development by nazsco · · Score: 1

      > If you looked up STUPID in the dictionary it wouldn't have the eBay logo

      and that logo would be just bellow allmusic.com's, right?

    6. Re:Core Web Development by op12 · · Score: 1

      Actually, it looks like traffic is still climbing. Last year there appears to have been a drop-off in September or so, but that also was climbing during the holidays.

    7. Re:Core Web Development by Lew+Payne · · Score: 1

      | > If you looked up STUPID in the dictionary it wouldn't have the eBay logo
      |
      | and that logo would be just bellow allmusic.com's, right?

      Seems to me that "nazsco" would qualify in the "illiterate" category, using
      his "bellow" (as in accordian or glass blower) example as supporting evidence.

    8. Re:Core Web Development by mysqlrocks · · Score: 1

      Sure, but if managers are so stupid as to propose changes at critical junctures, where are they going to learn if not from the programmers...

      Didn't you get the memo? Management knows best, there is nothing they can learn from FTEs, never-mind programmers of all people. Now about that TPS report...

    9. Re:Core Web Development by Anonymous Coward · · Score: 0

      Just because you've had some bad experiences with eBay, that doesn't mean every programming book should devote an entire freaking chapter to something which is 1) obvious, 2) has nothing, really, do to with programming per se, and 3) takes about one sentence to explain anyway.

      Now you may continue your incoherent rant.

    10. Re:Core Web Development by Anonymous Coward · · Score: 0

      It's because most people realize that even if they find a good bargain on eBay a week before Christmas, they will never receive the item in time.

    11. Re:Core Web Development by Anonymous Coward · · Score: 0

      So, even though you said that eBay was "astoundingly stupid" for doing this, you can't even muster a slight excuse for being so completely off the mark? You just reply with what you "think" about their summer sales or whatever, despite having nothing to go on but your obviously flawed gut instinct? Here's some advice: stop digging and you might have a chance of getting yourself out of the hole you're in.

    12. Re:Core Web Development by Anonymous Coward · · Score: 0

      What changed?

  8. Re:Oxymoron by DogDude · · Score: 1

    No offense intended, but when I think "robust" I think of certain basic minimum requirements that MySQL is either lacking, or are in 1.0 release phase.

    --
    I don't respond to AC's.
  9. Re:Oxymoron by SSpade · · Score: 3, Funny

    Gnight writes

    Oh phooey.

    MySQL is fine for the vast majority of applications out there. You can build robust database applications with it, no problem. Now, if what you are really trying to say is that there's better things out there, then sure I'll agree with you. But to just say that you can't get robustness out of MySQL... I don't think that's accurate at all.

    Hmm. Certainly looks like an informed opinion, but I wonder whether it could be from someone with a bias, perhaps?

    --
    It compiles! Ship it!

    Ah. There's the dead giveaway. Gnight is on the the MySQL Quality Assurance team.

  10. Not great. by temojen · · Score: 1

    Most of the MySQL using code I've seen out there doesn't use transactions, but instead just trusts that changes will be independent and take effect. Jumping to an ACID compliant (by default) database won't make a huge difference if you're not using proper transactions anyways. Although the better multi-join query performance may help.

  11. Re:Oxymoron by kpharmer · · Score: 5, Insightful

    > MySQL is fine for the vast majority of applications out there.

    Ya, I've heard that line of bs from mysql for about a half-dozen years:
        - they said it when they didn't have transactions - and it wasn't true
        - they said it when they didn't have unions or subselects - and it wasn't true
        - they said it when they didn't have referential integrity - and it wasn't true
        - they said it when they didn't have triggers, stored procs, and views - and it wasn't true

    Now, they've resolved *most* of the problems, and it's *almost* true. Sure, you can build robust applications with it. Of course, you can build robust applications with msql as well - it's just the extra effort that is required to achive "robustness" when:
        - silent errors and data corruption problems current and historical
        - frequent deviations from ansi sql (comments, nulls, etc)
        - simple optimizer that is notorious for performance problems on 5+ way joins
        - if you're planning on having your app run at various isps, most don't support current version - leaving you stuck historical issues (no views, etc)
        - lack of parallelism or partitioning features - giving it about 2-5% of the speed of oracle/db2/informix when it comes to large table scans (reporting, analytics, etc)

    So, sure. You can build robust apps with it. But man, it is so much more work than using postgresql. Let alone db2 or oracle. Maybe this makes sense for somebody (asp model targeting large number of isps) where you can afford the economics of re-inventing the wheel since most isps are running back-level versions.

    Now, this might change in two years. Assuming that MySQL comes up with a substitute for Innodb (no attractive options yet), simplifies their licensing, and resolves the most significant existing issues. Then yes, it will be a reasonable option, right up there with postgesql, etc. Until then save your licensing dollars for something better and freer.

  12. Amazon has the same review... by __aaclcg7560 · · Score: 4, Informative

    I guess someone is rehashing this review. If you stroll down the Amazon page for this book, you get the same review text found in this Slashdot article but dated 10/30/2005. So much for submitting an original review. Then again this is Slashdot.

    1. Re:Amazon has the same review... by Lord+Duran · · Score: 1

      You do know it's the same guy, don't you?

  13. Re:Oxymoron by Anonymous Coward · · Score: 0

    You haven't used mysql in a while have you? You ought to give v. 5 a try.

  14. I'm holding out for by melted · · Score: 1

    "Core strategic web application paradigm development with AJAX, Synergistic go-to-market edition"

  15. Re:Oxymoron by gregarican · · Score: 0, Redundant

    Why in the hell was this modded down as 'Troll'? Anyone who is vaguely familiar with database systems knows that mySQL is one of the more entry-level players out there. Sure for hosting a bunch of select statements it's great. But it's barely catching up with the competition by providing such _groundbreaking_ items such as record level locking, triggers, stored procs, etc. now or perhaps in an upcoming version. Plus there still are the infamous mySQL gotchas, many of which apply today as they did back in 1997 or so. Gimme a break, people!

  16. Re:Clear the soapbox by Anonymous Coward · · Score: 0

    It's not just programming, you should see the way that guy acts on gamefaqs. It's almost depressing.

  17. Re:Oxymoron by DogDude · · Score: 1

    For me, the database is the most important piece of our business. Absolutely mission critical. If a database goes down, nobody gets paid. I wouldn't even consider using any database version that is less then several years old. I'll let other people break it in and find all of the bugs and stability issues, first, before I trust my (and my employees') livelihoods to it.

    --
    I don't respond to AC's.
  18. Re:where can I download this book? by digitaldc · · Score: 3, Funny

    Books should be free.

    They are free at the local Library.

    --
    He who knows best knows how little he knows. - Thomas Jefferson
  19. My approach by Spy+der+Mann · · Score: 2, Interesting

    The fact that you believe that implementing an MVC pattern to organize your UI layer

    Oh please, Where did I say i used all that just to implement my UI layer?

    Maybe if you paid enough attention to what I said, you'd have realized that I never implied "templates = multitier". Templates are a NECESSARY part of the view, but they alone don't make a multi-tier app.

    To clarify, this is how i build my web-apps:

    a) I have the main ".php" files which implement the Controller. Actually i use a prepend that includes them, but that's my approach. Each main php file has a function "handle_request()" which does all the processing. I came with this concept while studying Apache Velocity. The main php files include() the particular libraries used in the model, which is split between the business and data-tier.

    b) Also, the prepend.php includes (engine.php), which itself include()s security.php. I call this is the "security tier" which lies on top of the controller. The security tier verifies that no weird requests are done, and filters the unnecessary global and environment variables. It also checks the login, session, etc.

    c) For the database class I used, has two subclasses: one for reading the data, and another for writing. These can have two different users connected to the MySQL database. All database operations are done thru these classes, saving the app from SQL-injections in read-only queries. Also, having the controller embedded in a function saves us from global variables injection and other nastiness.

    d) The controller arranges the GET and POST parameters into an associative array, which it passes to the appropriate business-tier function. In reality, I have the business and data-tier a little bit mixed, but it's organized enough that it doesn't give too much trouble.

    e) The business-tier returns another set of parameters, which are to be passed (later) to the template (which template to use is calculated also based on GET and POST, even SESSION).

    f) Finally, the controller returns in an associative array, the template file and the e) parameters to the engine.php, which uses a template object to process the output.

    As you can see, while processing I do not use a single echo statement. All the data (database output) is passed thru associative arrays. In other frameworks, I'd have returned an XML string which would be passed to an XSLT engine.

    So, I hope that's multi-tier enough for you. If you were so kind to show us how YOU implement your multi-tier apps (you didn't), I'd really appreciate it.

    1. Re:My approach by julesh · · Score: 1

      I'm still not sure if this is technically 3 tier, as both your business logic and UI tiers are executing in the same context.

      I've worked on an app that works very similarly to that, but the associative arrays of results generated by the business logic tier are recoded into XML and passed as a result to an HTTP request from the UI tier. It's actually a trivial modification to make once you have a framework like it sounds you do, but makes a big difference in flexibility and scalability of the solution.

    2. Re:My approach by Anonymous Coward · · Score: 1, Insightful

      I believe that the poster may have been hinting at your misuse of the MVC pattern, and not your application structure per se. No Java developer worth her salt would equate the three components of MVC (model, view, controller) to business-logic, interface, and database and build an entire app that way. In any scalable tiered app that I've been a part of, MVC is used to structure only the UI layer of an application. Your app structure really only splits up your single layer app into components, which is a good start, but not truly tiered.

    3. Re:My approach by TGK · · Score: 1

      Ah! A kindred spirit. You might want to check out fusebox if you haven't allready. I find that the MVC system works wonderfully therein and that fusebox's layout system takes 90% of the headache out of the layout files.

      Even though it's built to work primarly with Cold Fusion, there's a Fusebox port - which as long as you don't need to build a HUGE application works really well.

      --
      Killfile(TGK)
      No trees were killed in the creation of this post. However, many electrons were inconvenienced.
    4. Re:My approach by stealthzap · · Score: 0

      This guy got it right. And not to brag, but I know because I got it right too. You would almost never know that my site http://reservations.californiasunhotels.com/ is just one template running off a business backend that powers many sites. And just because I have a template to provide main navigation and headers across all pages doesn't mean I have to use the html to stylize them. By virtue of using templates, I have eased the pain of providing standard items across multiple pages 1000 fold.

      The guy who mentions that templates are a bad idea because you should be controlling display with css seems to forget that css won't put the elements you want there to display in the first place. That is why you have templates. To provide different data chunks where appropriate in a consistent easily reproducible format. Use the css to lay them out however you want, but drop them on the page using a template for easiest maintenance. Css will *never* get you another column of new data, but a template can push it across as many pages as you want!

  20. Wondering About the Blog Engine... by jonbeckett73 · · Score: 1

    Having written a blog engine myself using PHP and MySQL and given it away as open source, I'm wondering what he calls "robust code" too... I'm a professional developer in the daytime, and no book code I have ever seen has been good enough for other people to pick up easily (not enough conventions etc).

    If you're interested in my project by the way, head on over to the PluggedOut Blog project.

    --
    Jonathan Beckett http://www.pluggedout.com
    1. Re:Wondering About the Blog Engine... by CuratorTom · · Score: 0, Flamebait

      Has anyone not written a blog engine in PHP? That's the kind of thing we do when we're bored, isn't it? Here's my 3-hours-one-night hack: PolkaDot

    2. Re:Wondering About the Blog Engine... by Anonymous Coward · · Score: 0

      That's a pretty smug thing to say. They guy goes on about his pride and joy and you have to belittle his efforts because you've already done it. Way to go.

      - DJNewStyle (Too lazy to register)

    3. Re:Wondering About the Blog Engine... by CuratorTom · · Score: 1

      It was just a joke. His is a full-blown system and mine is a little hack. I wasn't making a serious comparison.

      That said, there are an awful lot of PHP-based blogging systems out there. (Mine being probably the simplest and least powerful.)

    4. Re:Wondering About the Blog Engine... by jonbeckett73 · · Score: 1

      I'm big enough and ugly enough to look after myself :)

      My blog script isn't really "my pride and joy" - it's just some code I knocked together for myself that I now let other people have copies of. It hopefully shows them how a pro puts scripts together, and shows them some nice (easily managed) ways of doing things.

      My CMS code is quite a bit more clever than the blog code. but that's another story...

      --
      Jonathan Beckett http://www.pluggedout.com
  21. Yuck templates by SmallFurryCreature · · Score: 2, Insightful
    I fucking hate them. Not as much as I hate people that preach about database abstraction but I do fucking hate them.

    Why? Because of maintenance. But templates are supposed to make it easier to maintain aren't they.

    No. Templates are there to add another layer of complexity to an app. Seperating the html from the php so that the designers are not confused? Hire better designers. Easily allow you to modify the site?

    Well yeah if you think changing the color is a modification that should be in the html (should be in css) then yeah.

    Perhaps I only seen bad implementiations of templates but in my experience the end result was always that you could never tell wich part of the fucking site was controlling what and that even simple modifications meant you had to figure out the template engine being used.

    In my experience sites either have tiny changes that can be done by the coder and designer working together in a good team OR should have been in css anyway. The big redesigns usually require a code change anyway.

    Worse, I had to handle more then one site where the answer was simple, Oh you want that change, sorry no that can't be done in the template. Template changes is for cosmetic changes, not functionality changes. Most buyers of e-commerce sites just don't seem to realize it. They think template means you can change your website. Yeah, in the same way a skin can change your winamp/xmms.

    Perhaps I just build my sites wrong, I tend to make the html and php far to intertwined with a lot of the html being build by the code not just the php filling in certain blanks.

    Database abstraction is usually defended by how easy it makes it to switch databases without having to switch code.

    Eh yeah right. How often does this happen anyway? Like the site redesign it just is not a frequent occurence. Worse you often find that in favor of abstraction they leave out nice handy features one database supports but nobody else. Mysql_return_id. Every handy and only done by Mysql.

    Again perhaps it was just bad experience but I seen several cases where the abstraction layer used did not support this feature forcing me to code around it. Extra PHP code to handle stuff already in the engine. Oh I am happy now!

    The company that insisted the most on the abstraction NEVER switched in the two years I was there. Extra code extra bugs for something that is never used.

    Image this in the real world. Your car doors being welded shut because one day you might want to turn it into a race car. WTF?

    What is my point? Well that theory and practice do not mix. Yeah I 3 tired apps are usefull sometimes BUT that does not mean every bloody application has to use it. Database abastraction is usefull for code that is certain to grow. 99% of websites do not. Templates are usefull when you know you will get a lot of requests for cosmetic changes that are to big to complex to fit into css.

    As for the whole saving you hours of work deal. At how many hours cost? I once read a quote that went something like this, "Do not code for code re-use unless you know in advance you are going to re-use it at least 3 times. Else the time coding for re-use will simply not recovered".

    It made a lot of sense.

    Perhaps I am just allergic to buzzwords.

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

    1. Re:Yuck templates by bobdinkel · · Score: 2, Informative

      Database Abstraction:
      For the most part, I think you're right on about database abstraction. The vast majority or apps will never change databases. However, I think a great deal of the appeal of most DB abstraction packages is the functions. Most packages allow you to get just a single value without having to do a lot of the crap that you would normally have to do. For example, something like this:

      $myVar = $db->get_var('SELECT foo FROM bar WHERE baz='123');

      Or you can get results returned as an associative array, or whatever. It can save you from a lot of repeated tedium. That might not be reason enough for you to use it, but just so you're aware. Also, I'm not sure what 'mysql_result_id' is. I assume you meant 'mysql_insert_id' and if so, I've used a few different database abstraction packages and every one of them gave me ready access to that value.

      Templates:
      Like anything, templates can be done wrong. Really wrong. And I've seen some really bad templating. But when done right, templating can make your life so much easier. The point of templating is to make maintenance easier. But it can also make development easier. Categorically rejecting templates is like categorically rejecting user defined functions, IMO.

      --
      A publicly traded company exists solely to make profits for shareholders.
    2. Re:Yuck templates by Jack9 · · Score: 1

      I've never found any DB abstraction that was better than my homebrew. // Put in global include or instantiate as needed
      $MySQL = new mysql_connect(); // optional: user,pass,server,db params

      $query = "select foo from bar";
      $MySQL->query($query); // I intuitively "see" the difference between a method and var when reading code
      while($MySQL->next()){
          $row = $MySQL->get_row();
      }
      ---
      Everything MySQL can tell me, the object knows or can figure out from the query itself...yes I substr out the type of query to determine method context

      I love examining implementations of SQL absractions. I'm a geek like that.

      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    3. Re:Yuck templates by Anonymous Coward · · Score: 2, Informative

      I find this attitude prevalent in people that do mostly procedural programming for smaller web sites. I can only say that this sort of hostility towards the more academic and sophisticated aspects of software engineering will only hurt you in the end. Punk rock programming is cool if that's your thing. If you want to build sophisticated web application correctly, you will need to learn and use OOP, MVC frameworks and relational database design. That's cold hard truth brother. Good luck!

    4. Re:Yuck templates by Anonymous Coward · · Score: 0

      "As for the whole saving you hours of work deal. At how many hours cost? I once read a quote that went something like this, "Do not code for code re-use unless you know in advance you are going to re-use it at least 3 times. Else the time coding for re-use will simply not recovered". "

      I don't know about you... but any code i've written so far for web applications i have re-used countless of times. I've even developed a simple CMS which i use for all the websites i help create. Since the xHTML is in a completely different file i can easily work with my designer friend. He just has to edit the template files to change anything he needs (though most of the time editing the CSS is enough, there are times when you need to add extra elements for design sake) and is free to experiment with layout as he pleases. Taking a look at a mostly clean xHTML template file compared to one that has PHP code in it makes him alot more comfortable in making changes. Not to mention how both the PHP file and the Template file look so much neater.

      Also if you truly think templates are such a bane, maybe you have not tried modifying applications like OSCommerce or even Zencart(an example of templating gone wrong IMO). If there's one thing i really hate when working with other people's PHP scripts is making sense of their PHP+HTML. Can i figure it out? Sure i can... it just takes more work which also means more time.

      Remember, everything is fine and dandy when you are the only one going to modify what you create... but once you factor in other people, the rules change.

    5. Re:Yuck templates by markandrew · · Score: 1
      Perhaps I just build my sites wrong, I tend to make the html and php far to intertwined with a lot of the html being build by the code not just the php filling in certain blanks.

      You're right. You build your sites wrong. :)

      I also think you're confused about what templates are used for. They're not just there to separate HTML and PHP code, but to separate data code from presentation code. These are not the same things.

      You can have php code which manipulates data (eg. database interaction) and php code which manipulates presentation (eg. HTML or template markup). The two should be separated where possible - this doesn't mean that php shouldn't be used to create HTML markup - but with most template engines - smarty is a good example here - most of the time php isn't necessary to create HTML, because the template system can do it and php is unnecessary.

      Perhaps I only seen bad implementiations of templates but in my experience the end result was always that you could never tell wich part of the fucking site was controlling what and that even simple modifications meant you had to figure out the template engine being used.

      You're right again - you've only seen bad implementations. It should be easy to tell which code controls what, much easier in fact than without templates. If the wrong data is being displayed, it's in the data layer. If the correct data is being displayed incorrectly, it's in the presentation layer. Easy huh?

  22. Save SEVEN ($7) Bucks! by Anonymous Coward · · Score: 2, Informative

    Save yourself $7 by buying the book here: Core Web Application Development with PHP & MySQL. And if you use the "secret" A9.com discount, you can save an extra 1.57%!

    1. Re:Save SEVEN ($7) Bucks! by 0x20 · · Score: 1

      hey, thanks, kaleidojewel-20^H^H^H^H^H^H^H^H^H^H^H^H^HAnonymous Coward! what a generous, and completely selfless, act of hotlinking.

  23. Re:Oxymoron by mikecito · · Score: 1

    It seems to me that using database software only after it's several years old is extreme. I mean, that would mean you barely considered moving to SQL Server 2000 last year? I can see waiting maybe 3-4 months, at most a year, but several years? It sounds to me that if your database is that important, and backups of the data just aren't enough, then you need a less stressful line of work. Stop and smell the roses, and try out new products. They have this new Windows version now that has a green start button, instead of gray. It's crazy out there!

  24. Re: Amazon has the same re... (by the same author) by MasterC · · Score: 2, Informative

    The submitter of the review on amazon is "John A. Suda" and the submitter here is "jsuda" AND his amazon nickname is "jsuda1". I give it a 99.9999% probability that "John A. Suda" (aka "jsuda1") and "jsuda" are the one and the same. jsuda, here, just apparently decided to wait...almost two months before submitting it here.

    Parent got it right on it not being exactly an original review, but at least Joe Bloe didn't (well, 0.0001%) submit John Suda's review.

    --
    :wq
  25. Sure, whatever... by Anonymous Coward · · Score: 0
    But man, it is so much more work than using postgresql.

    Must be why everyone is using Postgess... OH WAIT! NOT!

  26. Re:Oxymoron by Karma+Farmer · · Score: 1

    MySQL is a perfectly fine set of APIs to wrap around flat files. And, since the majority of websites would get by just fine with flat files with very simple file-level locking, by extension the majority of websites would get by just fine with MySQL.

    However, I don't think anyone with any knowledge uses MySQL as a database. The idea is absurd.

  27. Re: Amazon has the same re... (by the same author) by __aaclcg7560 · · Score: 3, Informative

    The text violated the Slashdot review guidelines: "If you've reviewed the book elsewhere anywhere besides a personal home page (for instance, on Amazon) please be sure that your review for Slashdot is substantially different."

  28. Re:Oxymoron by Karma+Farmer · · Score: 2, Insightful

    You know, there are a lot of places using databases servers that haven't been restarted since mysql v. 2 was the latest and greatest.

    The fact that every six months mysql comes out with a brand new, latest and greatest, we-honestly-got-it-right-this-time-for-real version doesn't give anyone warm fuzzies.

  29. Re:Oxymoron by DogDude · · Score: 1

    ou need a less stressful line of work.

    That's what happens when you own a new, small business. *Everything* is absolutely, positively mission critical, with little to no room for error. We also stay one full calendar year behind releases for our point-of-sale software since, of course, if that goes flaky, I'm equally broke. Hell, I won't even use USB devices quite yet. All good, solid, parallel port and serial port connections for our important equipment.

    If our database got corrupted, for example, we'd have to take time to shut down and restore from a backup, and try to fudge all of the missing data. Some super important data, like credit card transactions, would be lost, which means than $5K worth of lost transactions means $5K lost if we hadn't settled recently. A day or two down to deal with the headache would be many thousands in lost sales, and of course, pissed off customers that may or may not come back. And, we'd have employees twiddling their thumbs. It really *is* that important from my point of view.

    --
    I don't respond to AC's.
  30. Re:where can I download this book? by Shakes268 · · Score: 1

    And with google's new technology, we won't even have to go the library!

  31. php- web is about the libraries by acomj · · Score: 1

    PHP programming is becomming about the libraries. Smartyhttp://smarty.php.net/ - a template library makes putting coherent websites together easier. Although it doesn't do anything for the database part of the site, its one less thing to worry about.

      PEAR confused me and I was programming before it so I have my own libraries. The php web documentation is excellent.

    although the java studio creator is now free, and seems like an amazing tool, its not enough to get me away from php
    http://developers.sun.com/prodtech/javatools/jscre ator/reference/quicktour/2/flash/index.html

    1. Re:php- web is about the libraries by Anonymous Coward · · Score: 0

      The interesting thing about PHP is the lack of standard interface library. PHP(/HTML/JS) is repeatedly used to build common kinds of interface widgets, such as sortable recordsets, tree-menus, drop-down-menus, movable/closable divisions. Everyone thinks they've got something special so they release their library before it's anything really special, so developers looking to save time can't decide which is best, and none have really emerged as any kind of acceptable standard.

      This true for a comprehensive library but not so much for individual widgets. FCKEditor seems accessible and robust rich-text editing box for web-pages; there are some decent menuing systems, etc, but you really have to cobble together your own widget set.

      So like everyone you write your own, then six months later you realise you went about it all wrong and write another one. It's good experience though. When there's a really mature dhtml-gui library, just think how many experienced PHP developers there will be to take advantage of it.

      People can say what they want about "html wasn't meant..." or "stateless applications aren't really..." but everyone knows that everyone knows how to load a web page, does so regularly, and the web-browser will continue to be the most popular platform, and the easiest to install on. Of course the web wasn't intended to do what it's doing now, but that's innovation.

      I like how we can write meaningful sub-MB apps again, but this time around they're all gui and internet flavoured.

  32. Finally! by Qbertino · · Score: 3, Insightful

    A book on PHP and MySQL. I've been waiting for this for ages!
    Really, this is just what we needed.

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:Finally! by joebutton · · Score: 1

      Um, I think the parent is being sarcastic. But then maybe the 4 - insightful rating is sarcastic too.

      We're all too postmodern to be sure these days.

  33. Re:Oxymoron by garaged · · Score: 0

    and your that mind tries hard to make essentials for any project, and don't mind the drawbacks from one another

    --
    I'm positive, don't belive me look at my karma
  34. Re:Oxymoron by chromatic · · Score: 1
    Gnight is on the the MySQL Quality Assurance team.

    More projects should be so lucky. MySQL has had a huge automated test suite for years.

  35. Re:Oxymoron by Jack9 · · Score: 1
    Assuming that MySQL comes up with a substitute for Innodb (no attractive options yet), simplifies their licensing, and resolves the most significant existing issues.
    I'm also you don't like the licensing, but I'm not going to argue philosophy when I have the practical experience of NEVER coming up against it, over the years. I use it as a tool, not as something to repackage and resell.

    Please expand on why Innodb is a valid reason to reject MySQL or even make it unattractive.

    P.S.
    For websites, MySQL still seems like a good choice. MySpace uses MySQL. I wonder what they would have to say?
    --

    Often wrong but never in doubt.
    I am Jack9.
    Everyone knows me.
  36. Re:Oxymoron by bani · · Score: 2, Interesting

    Sounds like a moving target to me. No matter what mysql does (or doesn't do), it will never be "good enough", because elitists will always need something to bash. Even if it was just the postgresql codebase renamed. It would still "suck" because it's "mysql".

    It's just a fashionable and trendy target to bash.

    Sorta like the (open|free|net)bsd zealots who bash linux. They're so insecure in their choice of OS that they need to put down something else in order to feel better.

  37. Re:Oxymoron by bani · · Score: 1

    it was modded down as troll because it was a troll.

    all this database elitism smacks of the old "my amiga is better than your atari" infantilism.

    only those people so insecure in their choice of software would find a need to go out of their way to bash something else.

    after all, everyone with an IQ greater than a glass of water knows both postgresql and mysql suck. oracle is the only real database in the entire universe.

  38. Re:Oxymoron by ohwell · · Score: 1

    why fudge any missing data, you do use transactions don't you? Somehow I'm not believing your story one bit it seems contrived!

  39. Re:Oxymoron by kpharmer · · Score: 1

    > I'm also you don't like the licensing, but I'm not going to argue philosophy when I have the
    > practical experience of NEVER coming up against it, over the years. I use it as a tool, not
    > as something to repackage and resell.

    Well, somebody is coming up against it - it pays their bills, and the possibility of making this revenue is what got them their investment dollars. ;-) But, if you can commit to staying completely GPL you're probably fine. Not everybody can. Nor given the changes to their license in the past is there any guarantee that future inconvenient changes won't be made.

    > Please expand on why Innodb is a valid reason to reject MySQL or even make it unattractive.

    Oracle now owns Innodb. They compete with mysql for low-end database revenue, and they certainly didn't buy it to do MySQL any favors. Their solution is to either increase licensing fees and gain revenue off mysql, to harm MySQL by GPLing Innodb, or just to undermine MySQL growth by injecting uncertainly into its future. There are other possibilities but none seem credible.

    This is a very real threat, one that took the MySQL folks almost a month to even respond to directly. Sure, they can fork Innodb, but they lack the personnel & skills to pull that off. And there are no other comparable products for them to go to in the market.

    Given that Innodb is where about 80% of the innovation and must-have capabilities within MySQL come from (transactions, foreign key constraints, etc) their future is seriously in question. Until this is resolved, I would not use this database for a new project unless my shop was already 100% commited to MySQL.

    > For websites, MySQL still seems like a good choice. MySpace uses MySQL. I wonder what they would have to say?

    I think it was a good choice three years ago, but not really since then. The thing about using mysql for your website is that you'll probably want some other product for other applications internally. And then what? You've got to now learn and support multiple database products. Given the cost of labor, that's generally not a great strategy. It's generally cheaper to stick with a single product.

  40. Re:Oxymoron by Debiant · · Score: 2, Insightful

    I have to agree with many other in this thread, The idea that mySQL is not 'good enough' can be true in some cases, but it doesn't mean it's enough good for many of us. Sounds like an elitism to me, or atleast somewhat shortsighted view.

    I've never been a MySQL fan, but I do use it at work where I develop and keep up a website. It doesn't cost anything directly to us(our webhost keeps it up), and it is far more than aduquote to most things one can come up with.

    Maybe it's not a F1 car or latest Audi, but even if it is rusty old VM the cost/use ration is excellent if one just needs to move from point A to point B. Maybe it doesn't accelarate from 0-100 mph quickly enough, or maybe it doesn't have the latest GPS navigation system. But most of don't need them either. Not all business needs need the ultra hyper new database that can do EVERYTHING. Most of real life needs are just fetching the information and getting it to the webpage.

    Infact I'd argue MySQL has more features that most people ever really need from a database. Outruling a case where one would become a de facto database expert.

    --
    Nobody knows the trouble I've seen, nobody knows has the trouble seen me, even I sometimes wonder why I write these line
  41. Re:Oxymoron by DogDude · · Score: 1

    If I have a database that is handling sales, and it crashes, gets corrupt, the machine dies, etc., transactions are irrelevant. I'm talking about sales transactions. Those, along with all shipping, receiving, etc. data since the last backup would all be lost. Of course all of our apps use transactions (in the database sense).

    --
    I don't respond to AC's.
  42. Re:Oxymoron by Crag · · Score: 2, Funny

    The original claim, that "MySQL is fine for the vast majority of applications out there" is not invalidated by any of the problems you point out.

    The objections you raise are valid, but irrelevant. There are far more cases of small-scale applications use out there than Industrial Strength applications. Who cares if some David Hasselhoff fan website's bulletin board isn't robust? Even the owner of the board probably doesn't REALLY care.

    See also: http://www.dreamsongs.com/WorseIsBetter.html

  43. Re:Oxymoron by Anonymous Coward · · Score: 1, Insightful

    How the hell can you ask for MySql to simplify the licensing issues? wtf?! here they are (as I understand them) in laymens terms: Are you a business? No. MySql is free, but you only have support from the other open source people around the world. Are you a business? Yes. MySql is free, but you pay for support for the program. How much simpler could it possibly get?

  44. Re:Save SEVEN ($7) Bucks! FIXED REFERRAL LINK by Bill+Hayden · · Score: 0

    There, much better. :-)

    Save yourself $7 by buying the book here: Core Web Application Development with PHP & MySQL. And if you use the "secret" A9.com discount, you can save an extra 1.57%!

    --
    Protect your browser with the Force Safe Search add-on
  45. Re:Oxymoron by Gnight · · Score: 2, Informative
    Ya, I've heard that line of bs from mysql for about a half-dozen years:
            - they said it when they didn't have transactions - and it wasn't true
            - they said it when they didn't have unions or subselects - and it wasn't true
            - they said it when they didn't have referential integrity - and it wasn't true
            - they said it when they didn't have triggers, stored procs, and views - and it wasn't true

    When I say that MySQL is fine for most applications, I mean now, not 6 years ago.


    Sure, you can build robust applications with it.

    I'm glad we agree.

    ...extra effort... is required to achive "robustness" when [in MySQL]:
            - silent errors and data corruption problems current and historical
            - frequent deviations from ansi sql (comments, nulls, etc)


    Ok, I guess I'll give you these. I'm just glad that PostgreSQL and all the others don't deviate at all from the ANSI SQL stantards. :-)

    Also, I have never had a problem with MySQL corrupting data. Do you have any references regarding data corruption due to a fault in the MySQL code? (seriously, I would like to read about it)


            - simple optimizer that is notorious for performance problems on 5+ way joins ...
            - lack of parallelism or partitioning features - giving it about 2-5% of the speed of oracle/db2/informix when it comes to large table scans (reporting, analytics, etc)

    I would consider these advanced functions.


            - if you're planning on having your app run at various isps, most don't support current version...


    How is this MySQL's fault?


    So, sure. You can build robust apps with it. But man, it is so much more work than using postgresql.


    I'm not saying that MySQL is better or worse than anything else. What I'm saying is that for the vast majority of applications out there, MySQL will do the job just fine.


    Now, this might change in two years. Assuming that MySQL ... resolves the most significant existing issues. Then yes, it will be a reasonable option, right up there with postgesql[sic], etc.


    No, in two years people will still be dinging MySQL for its shortcomings instead of giving it credit (even just a little) where it's due.
  46. review & book by SebNukem · · Score: 2, Informative

    MINUS: if i wanted to read the Table of Contents, I would go to google print or B&N - what a worthless review.
    PLUS: I own this book. It's actually very good.

  47. Re:Oxymoron by Anonymous Coward · · Score: 0

    I can't answer all of your points (I don't know enough about MySQL), but
    some are clearly no longer true:

    > silent errors and data corruption problems current and historical
    MySQL has an SQL_MODE of STRICT. Which changes the silent error behaviour.
    MyISAM tables are fast, but can get corrupt if say, you lost power. If this poses a problem use InnoDB tables. Problem fixed.

    > frequent deviations from ansi sql (comments, nulls, etc)
    A lot more addressed in mysql 5 -- one of my big issues was trimming white space from strings.

    > simple optimizer that is notorious for performance problems on 5+ way joins
    This did occur when it took too long to work out an execution plan. There is now a greedy optimizer (automatically invoked in MySQL 5), which resolves most of these issues.

  48. php-based templates by Spy+der+Mann · · Score: 1

    As for the whole saving you hours of work deal. At how many hours cost? I once read a quote that went something like this, "Do not code for code re-use unless you know in advance you are going to re-use it at least 3 times. Else the time coding for re-use will simply not recovered".

    I use my framework in 5 different intranet developments (two for the same company), so yes, it has saved me a lot of time.
    In fact, to start a new development, I just copy the code from the OTHER development and just erase the particular php / template files, and modify the config.php file. Ta-da.

    I made the basic framework in about 3 weeks, in my previous job. I adapted it (and improved it) to my current job where I made my first development with.

    About database abstraction, I agree with you. In my pre-previous job we had to stick to "standards" because our clients wanted to use Informix for later. Pfft... all the sql code was too generic and slow. Since at my current job we're using MySQL and not changing, I can use the proprietary features.

    My templates are php-based (google for "Beyond the Template engine"). So the templates have mixed PHP and HTML, this is a very powerful approach, since it overcomes the "oh sorry that can't be done from the templates" limitation in most templating engines.

    In fact, if I was ever forced into using (eeew) smarty or other template engines, I would stick my "php-templating" class and use smarty only for the cosmetic changes.

    My modified class allows me to use sub-templates, so i have a "main" template (i.e. logged in / guest) for the main site look-and-feel, and a "body" template which deals with the web app.

    In my development i often generate excel spreadsheets. So I can choose between an HTML and an EXCEL template. Since both of them are PHP-based, i have no problem, it's the same data. (I used PEAR spreadsheet class to generate the excel. Not what you'd expect from a "template", would you? ;-) )

    This is the true power of templates :)

    Perhaps I am just allergic to buzzwords.

    Yes, you are ;-) Actually, I think we all are.

  49. Re:Oxymoron by Anonymous Coward · · Score: 0

    I want what you're smoking.

    Something seldom mentioned are all the limitations in oracle, like SQL query length limitation, table column name limitations, general select statement limitations ( try : select * from WHERE id IN ( <and list over 1000 here> ), etc.

    As long as your doing relativly simple transaction heavy operations oracle might be sufficient, but the hidden limitations it contains make it a PITA for more advanced usage.

  50. Hey everyone look at me by lagerbottom · · Score: 1
    I hates the MySQL and PHP is insecure. I know we've done this a billion and two times but I like to pretend people still care!!! $OtherDb is so much better and if you are not useing $LatestLang|$OldTymeLang you are wrong.

    *sigh*

    --
    "He was a wise man who invented beer." - Plato
  51. Re:Save SEVEN ($7) Bucks! FIXED REFERRAL LINK by Anonymous Coward · · Score: 0

    Right, and now you put your own associate tag in the link. What a fucking n00b.

  52. Re:PHP is so 2004 by Anonymous Coward · · Score: 0

    Dude...STFU

  53. monty python argument by kpharmer · · Score: 1

    > Sounds like a moving target to me. No matter what mysql does (or doesn't do), it will never be "good enough", because
    > elitists will always need something to bash. Even if it was just the postgresql codebase renamed. It would still
    > "suck" because it's "mysql".

    nah, once the capability = the hype, then there will be other targets for scorn.

    > Sorta like the (open|free|net)bsd zealots who bash linux. They're so insecure in their choice of OS
    > that they need to put down something else in order to feel better.

    nice, a faith-based argument in which facts don't matter - and even pointing to short-comings in a product just proves you're wrong.

    Kind of like:
        Brian: I'm not the Messiah! Will you please listen? I am not the Messiah, do you understand? Honestly!
        Woman: Only the true Messiah denies His divinity!
        Brian: What?! Well, what sort of chance does that give me? All right... I AM the Messiah!
        Followers, en masse: He is! He is the Messiah!

    1. Re:monty python argument by Anonymous Coward · · Score: 0

      quoting monty python doesn't make you sound any more intelligent. in fact it makes you sound like an idiot.

  54. Re:Oxymoron by Karma+Farmer · · Score: 1

    If I have a database that is handling sales, and it crashes, gets corrupt, the machine dies, etc., transactions are irrelevant...

    There are methods for keeping off-site transaction logs; even if your server catches on fire and burns you can come back up to last committed transaction. It's probably expensive, both in complexity and setup costs, but it might help you sleep a little better at night.

  55. Re:Save SEVEN ($7) Bucks! FIXED REFERRAL LINK by Bill+Hayden · · Score: 1

    It was supposed to be a joke. I "fixed" the referral link. Then I went out on a limb and I included this new thing called a smilie...
     
    :-)

    ...that all the cool, hip, and with-it kids are using to convey humor on the Internet. It's brand new, so you may not have heard about it yet.

    --
    Protect your browser with the Force Safe Search add-on
  56. Re:Oxymoron by Anonymous Coward · · Score: 0

    that was so far over your head it was in another galaxy.

  57. Re:Oxymoron by Anonymous Coward · · Score: 0

    > - silent errors and data corruption problems current and historical

    After seven years of using MySQL on production systems, I don't see this as a problem at all. I know my db admins cringe when I say that, but all of my programmers agree. With web-based applications you always should check the validity of your input anyway for security reasons and to provide useful error messages back to the user. The users aren't doing their own SQL queries that update data any longer like they did a decade or more ago.

    The two worst things MySQL silently changes are numbers that are too small or too large and invalid dates. If you're even half-way careful, it's never a problem, and you end-up with a better application in the end.

    Another nice thing is that for many applications, you know better what you're doing than the database. A couple of our customers switched from a different SQL server because that server wouldn't allow them to put in dates like 2005-12-00. While that is an invalid date, it's amazingly useful for any date that needs to be between months or between years. For example, end of the year or end of the month entries in an accounting system. If you go to the end of the previous month they don't show-up and if you start on the current month they don't show-up. When you do a range that goes across the month end or year end, they show-up. I've worked on accounting systems for over 34 years, and I don't know of a better and more efficient way to do this. With MySQL, it just works.

  58. Relational DB and XML by Anonymous Coward · · Score: 0

    Anyones choice of "programming" language (ahem...) aside, but I find it kind of silly that people are still building apps that use relational back end AND use XML (and that includes XHTML) to communicate with user agents. That's like "so nineties" :) Wouldn't it be a bit (or a lot?) more efficient (not to mention elegant) to store data in a native XML database?

    And not have a single line of SQL in sight...

  59. Re:Oxymoron by ohwell · · Score: 1

    but your opening statement was about why you don't use current software, nothing in there mentions if the machine blows up old software will work better!

  60. hi (-5, Offtopic) by nazsco · · Score: 1

    you give too much importance to a humble 'l'.

    maybe freud can toy with this fact for a while.

    1. Re:hi (-5, Offtopic) by Lew+Payne · · Score: 1

      | you give too much importance to a humble 'l'.
      | maybe freud can toy with this fact for a while.

      You give too little importance to basic literacy.
      Proper nouns begin with a capital letter.
      Thus, it should be "Freud."

    2. Re:hi (-5, Offtopic) by nazsco · · Score: 1

      god. or you were born with a cauterized anus, or you're the best written gramar nazi bot i've ever seen.

  61. Re:Oxymoron by Anonymous Coward · · Score: 0

    >> - silent errors and data corruption problems current and historical

    > After seven years of using MySQL on production systems, I don't see this as a problem at all. I know my db admins cringe when I say that,
    > but all of my programmers agree. With web-based applications you always should check the validity of your input anyway for security reasons
    > and to provide useful error messages back to the user. The users aren't doing their own SQL queries that update data any longer like they
    > did a decade or more ago.

    After nineteen years of using relational databases, I can tell you that unless you implement a systematic method for finding them, data corruption problems are incredibly difficult to find. I've *never* encountered a production database I couldn't find them in. And they vastly multiply in databases that doesn't support transactions and constraints! Believe me here, I spent years on the old & nasty solutions that preceeded the relational databases (Adabas - now maxdb, isam, vsam, IMS-DB, etc).

    Application validation helps just a little - since it typically changes over time allowing different validations at different points in time. And it fails completely to protect you during data conversions, data cleanups, data migrations, major system upgrades, etc. To prevent these issues you really want a combination of database and application validations. In the database: transactions, enforced referential constraints, and enforced check constraints. In the application: input validations, complex business rules, etc.

    You'll have some duplication, but it shouldn't be that bad. And you shouldn't have to protect everything from a database that will corrupt your data. Because you *will* screw it up. It doesn't matter how careful you are, there are too many places to screw up - especially with multiple people on a project that changes often.

    > Another nice thing is that for many applications, you know better what you're doing than the database. A couple of our customers switched from
    > a different SQL server because that server wouldn't allow them to put in dates like 2005-12-00. While that is an invalid date, it's amazingly
    > useful for any date that needs to be between months or between years.

    And totally breaks portability with other databases
    And totally breaks compliance with ANSI SQL
    And totally breaks SQL arthimetic (how do you handle trans_date - 15 days when the trans_date = '2005-12-00'?)

    When you find yourself sometimes putting a date to the day and sometimes putting a date to the month in the same column you need to step back. Almost always you are guilty of overloading a column with two meanings: there will inevitably be diffeent business rules between the two kinds of dates. A better solution is break them up, use a time dimension (simple to use and way more powerful!).

    Since most databases these days allow you to create your own types, you're free to create a timestamp_to_month type if you want - that doesn't have days, but still supports date arithmetic. You could also create timestamp_to_week for the same reason, but there are multiple ways of counting weeks (even ISO standards).

    But a solution in which you create invalid dates in a timestamp is really just gaming the system. Eventually it will bite you.

  62. Re:Oxymoron by oldphreak · · Score: 1

    Ah, those MySQL guys. Their website offers the "Top Ten Reasons to Use MySQL" but at the end of the day we have to ask: what about Codd's 12 rules?