RSS feed - Using POG with Flex
- Optimizing your web application
- Regenerating large objects
- PHP4 or PHP5
- New and Improved
- Evolution of a cube
- POG Museum
- POG 3.0 alpha
- Initial Performance results Part 2
- Initial performance results
- Proposal: POG 3.0 object model
- Suggest a feature
- A new year, A new POG release
- Many-Many relations
- POG 2.5 Released
- POG 2.5 beta
- Automatic table alignment
- New version: 2.1.2 released
- RSS should work well now
- RSS feed glitches
- What's new in 2.1.0
- PHP Objects 2.1.0 (preview)
- PHP Object relations FAQ
- PHP Object Relations
- Searching base64 encoded text
- How to debug POG-generated objects
- POG UI Tips
- Featuring Of Interest links
- PHP CRUD
- POG 2.0.1: A better code generator
- A look at the POG SOAP API
- POG 2.0.0 released
- Coming soon: Generate parent-child objects
- Generated abstraction v/s dynamic abstraction
- Zend Framework preview
- Coming soon: Generate Objects through SOAP
- Easily save images and files to a database
- PHP, Paypal & POG
- Five advanced Code Generator tips
- PHP Pagination using generated objects
- PHP Code Generator benchmarks
- Representing database objects using an AJAX Tree interface
- Using SETUP in a production environment
- Description of the generated object package
- Introducing PHP Object Generator version 1.6
- Using AJAX and PHP Object Generator
- When to use Object->SaveNew()
- Generating PHP objects in 2006
- Happy Holidays
- A short video of the POG Setup process
- A sneak peek at POG 1.6
- POG Tip: Field limits
- Previous versions.
- Searching the blog and tutorials sections
- Generating code with "Other" SQL data types
- Five general POG tips
- POG source code locations
- Microsoft SQL 2005 Express Edition
- Impatiently awaiting PHP 5.1 and PDO
- Php Object Generator goes open source
- POG generates PDO compatible code
- Oracle to offer free database
- POG Google group
- Database Wrappers and POG
- Revisions
- The generator blog
- An explanation of the 'Escape' function.
- Mirror, mirror
- Using POG to solve real world problems
- A php object-relational database tool
- A simple and flexible Object Oriented approach to PHP
Back to the Code Generator
The POG Google group
The POG tutorials/code samples
The POG mirror site
When to use Object->SaveNew()
written 853 days agoWhile designing Php Object Generator, we wanted the Save() function to be ‘smart enough’ to know when to UPDATE a database record and when to do an INSERT. POG uses the objectId attribute to make this decision. The objectId attribute is an auto-increment field, which is automatically generated for all objects. The objectId is also by default, the primary key of the object. For more information, check out the Save CRUD method section of the tutorials. If the objectId is empty, POG will save the object to the database and assign the objectId after the INSERT. Upon subsequent calls to the Save() CRUD method of the same object, POG will UPDATE the corresponding row of the database. Therefore, using Save() does the job in almost all scenarios. Why then do we need the SaveNew() CRUD method?
There are specific situations where you want to force a database INSERT and this is when SaveNew() comes in handy. There are 2 main situations I can think of: The first one is when you want to clone an object within the database. In other words, you simply want to duplicate a row of your the database. The second is security. SaveNew() guards against unintentionally updating a database record with corrupt data. A rare and specific way this could happen is if, for example, you’ve created a user registration form whose input field names match the attribute names of your object, and in your code, you’re looping through the $_POST array and matching the input fields to attributes of your object as follows:
$keys = array_keys($_POST);
foreach ($keys as $key)
{
$user->{$key} = (isset($_POST[$key]) ? $_POST[$key] : ‘’);
}
$user->Save();
Someone could potentially create their own web form containing an input field called “userId” and perform a cross-domain POST to your script. The code above would grab the objectId value and assign it to the object. Upon Save(), POG will overwrite an existing record. This specific scenario can be avoided by using SaveNew() as follows:
$keys = array_keys($_POST);
foreach ($keys as $key)
{
$user->{$key} = (isset($_POST[$key]) ? $_POST[$key] : ‘’);
}
$user->SaveNew();
In the case of a user registration system or whenever the application logic dictates that only an INSERT (no UPDATE) should be performed, SaveNew() is the safer choice.

This is a weblog about the Php Object Generator (POG) project, OO PHP, databases and Php code generators in general.
Php Object Generator, (POG) is an open source PHP code generator which automatically generates clean & tested Object Oriented code for your PHP4/PHP5 application.
Subscribe to our RSS feed
Feedback, Feature Requests, Bugs to:
The POG Google group
Send us a Hello through email