Beheerder |
|
Goedemorgen sima leden
Ik heb de volgende class
http://www.plaatscode.be/2329/
In deze class heb ik de volgende methode
<?php
function EditSettings() {
/**
* Dynamische query update
*/
$class_details = new ReflectionClass('Onderhoud');
$props = $class_details->getProperties();
$aantal = count($props);
$Query = 'UPDATE admin_settings SET ';
for ($a_pr=0; $a_pr<$aantal; $a_pr++) {
$prop_name = $props[$a_pr]->getName();
$Query .= $prop_name . '=\'' . $this->$prop_name . '\',';
}
$Query = substr($Query, 0, (strlen($Query) - 1)) . ') WHERE settings_id = ' . $this->settings_id;
/**
* Einde aanmaken query
*/
$Query_res = @mysql_query($Query);
if ($Query_res === FALSE) {
throw new Exception('Editing admin settings error: Query failed ' . mysql_error() , QUERY_ERROR );
}
} ?>
<?php function EditSettings() { /** * Dynamische query update */ $class_details = new ReflectionClass('Onderhoud'); $props = $class_details->getProperties(); $Query = 'UPDATE admin_settings SET '; for ($a_pr=0; $a_pr<$aantal; $a_pr++) { $prop_name = $props[$a_pr]->getName(); $Query .= $prop_name . '=\'' . $this->$prop_name . '\','; } $Query = substr($Query, 0, (strlen($Query) - 1)) . ') WHERE settings_id = ' . $this->settings_id; /** * Einde aanmaken query */ if ($Query_res === FALSE) { throw new Exception ('Editing admin settings error: Query failed ' . mysql_error() , QUERY_ERROR ); } } ?>
Zoals je ziet is het niks anders dan een update query. Maar wel een dynamische. Voor de mensen die het niet snappen. Door middel van deze code word er een query gegenereerd aan de hand van de instantievariabelen van de klasse. Hier krijg je dus een query als:
UPDATE admin_settings SET settings_id = 1, info = 'blabla' enz.
Het probleem hier is dat de 1 van settings id tussen quotes komt. Hier loopt de query op vast. Wie heeft er een oplossing zodat getallen niet tussen quotes komen in de query?
Greetz en alvast bedankt
Marten
|