PHP beginner |
|
Ik denk dat het anders om problemen zou geven. Ik baseer mij nu even op de code van hier op sitemasters.
stel: je zou de gegevens niet ophalen
class Klanten {
public $iID;
public $sNaam;
public $sEmail;
public $sAdres;
public $sPostcode;
public $sWoonplaats;
class Klanten { public $iID; public $sNaam; public $sEmail; public $sAdres; public $sPostcode; public $sWoonplaats;
Dit is het begin, en zoals je ziet zijn deze allemaal leeg.
Stel dat je nu dit zou doen:
try {
/**
* Maak een nieuw object van de class klanten aan
*/
$oKlant = new Klanten();
$oKlant->sEmail = 'nieuwemailvanmarten@sitemasters.nl';
$oKlant->updateData($rDB);
try { /** * Maak een nieuw object van de class klanten aan */ $oKlant = new Klanten(); $oKlant->sEmail = 'nieuwemailvanmarten@sitemasters.nl'; $oKlant->updateData($rDB);
je hebt nu $oKlant->sEmail wel gevuld, maar de andere attributen blijven leeg.
Even verder in de code zie je dit:
public function updateData($connection) {
$sQuery = "UPDATE klanten SET
naam = '". mysql_real_escape_string($this->sNaam) ."',
email = '". mysql_real_escape_string($this->sEmail) ."',
adres = '". mysql_real_escape_string($this->sAdres) ."',
postcode = '". mysql_real_escape_string($this->sPostcode) ."',
woonplaats = '". mysql_real_escape_string($this->sWoonplaats) ."'
WHERE id = ". intval($this->iID);
$rResult = mysql_query($sQuery);
if ($rResult === FALSE) {
throw new Exception('Query mislukt: ' . mysql_error(), SQL_QUERY_ERROR);
}
}
public function updateData($connection) { $sQuery = "UPDATE klanten SET WHERE id = ". intval($this->iID); if ($rResult === FALSE) { throw new Exception ('Query mislukt: ' . mysql_error(), SQL_QUERY_ERROR ); } }
aangezien $this->iID leeg is (want die is niet handmatig gevuld, of niet gevuld door een selectquery), kan je ook geen update uitvoeren.
Het kan fout zijn wat ik zeg, maar volgens mij is dit waarom je eerst een selectquery moet doen om de attributen te vullen. Ook al omdat als je een update doet, en je zet handmatig de $oKlant->sEmail en $oKlant->iID, en je doet dan een update terwijl de andere allemaal leeg zijn, zullen ze ook veranderd worden in de database (kijk maar naar die updatequery).
EDIT: het antwoord van tuinstoel komt op hetzelfde neer.
Wat hij zegt klopt wel, maar dan moet je in het geval van het script hier op sima wel telkens àlle attributen terug invullen (handmatig) en je moet ook telkens het ID kennen van de klant in kwestie. |