Platon Technologies
not logged in Login Registration
open source software development celebrating 10 years of open source development! Wednesday, July 17, 2024
About Us
Open Source
Index  »  Projects  »  phpMyEdit  »  Documentation  »  HTML  »  SQL expressions

4.8. SQL expressions

There is a possibility to define a SQL expression that should be applied to particular field when reading or writting data from database. This is very useful when you want to interpret the field's content in different way than it is stored in database. To be more clear, see following examples.

Example 4-34. Read SQL expressions

$opts['fdd']['surname']['sql'] = 'CONCAT(surname, ', ', firstname)';
$opts['fdd']['title']['sql'] = 'IF(TRIM(title) != "", title, title2)';

The first example appends content of the firstname field to the surname field. Because this is done on the database level, sorting and searching (in table filtering page) on this field will properly work. Similarly in the second example, the title2 field will be used if the title field is empty. In this manner you can define a special static string, which should be printed in case a field is empty. Just substitute a quoted string in place of title2.

Similarly, you can use SQL expression for storing data into database.

Example 4-35. Write SQL expressions

$opts['fdd']['surname']['sqlw'] = 'UPPER($val_qas)';
$opts['fdd']['title']['sqlw'] = 'TRIM("$val_as")';

The first example above makes surname uppercase when storing field into database. The second one trims all whitespace characters around title before writing it to database.

As a placeholder for the field's content, there are three variables available.

  $val -- value of the field
  $val_as -- value with addslashes() function applied
  $val_qas -- same as $val_as with quotes around

If the $val is some"nice"thing, then $val_as becomes some\"nice\"thing and $val_qas becomes "some\"nice\"thing". You have to use these variables correctly in your ['sqlw'] expressions, otherwise a MySQL parsing error could occur. We recommend you use the $val_qas variable whenever possible, as it is the safest one from the mentioned alternatives.

A very useful and favourite usage of the ['sqlw'] option is to explicitly tell phpMyEdit to store a NULL value instead of an empty string for the particular column. Empty string and NULL are two different values. Many people really do not like empty strings in their tables, thus now they have possibility to change them to NULL when user simply enters nothing into form input field.

Example 4-36. Storing NULL instead of empty string

$opts['fdd']['col_name']['sqlw'] = 'IF($val_qas = "", NULL, $val_qas)';

Another example of the ['sqlw'] usage is the storage of user passwords. It is good idea to process user password using some well-known hash function before saving it in the database. Following statement is used in order to avoid re-hashing an already hashed string. This means, if col_name value was not changed, then do not apply MD5() on it. If col_name value was changed, then apply MD5() function.

Example 4-37. Storing password's MD5 hash

$opts['fdd']['col_name']['sqlw'] = 'IF(col_name = $val_qas, $val_qas, MD5($val_qas))';

Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top · Feedback form · Application form
Report bug on PLATON.SK website · Terms of use · Privacy policy