Beste manier PDO

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pepijn Geheim

Pepijn Geheim

25/07/2013 14:59:52
Quote Anchor link
Goedemiddag,

Sinds vandaag gebruik ik PDO. Vandaar dat ik een paar vraagjes heb waarvan ik het antwoord niet kon vinden.

Dit is de code die ik op dit moment gebruik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
$mysql
= new PDO("mysql:host=localhost;dbname=dbname", 'root', 'ww');
$query = $mysql->prepare("SELECT count(*) FROM users WHERE mail = :mail");
$query->bindParam(':mail', $mail);
$query->execute();
$num_rows = $query->fetch(PDO::FETCH_NUM)[0];
if($num_rows > 0) {
    $query = $mysql->prepare("UPDATE users SET activation_key = :key, token = :token, is_activated = :activated WHERE mail = :mail");
}
else {
    $query = $mysql->prepare("INSERT INTO users (mail, activation_key, token) VALUES (:mail, :key, :token)");  
}

                    
$query->bindParam(':mail', $mail);
$query->bindParam(':key', $key);
$query->bindParam(':token', $token);
$query->execute();
?>


De twee vragen die ik heb,
- Hebben jullie over het algemeen tips, hoe ik deze code kan optimaliseren?
- Als $num_rows meer dan 0 is, staat er in $query `:activated`, dit moet echter altijd 'false' zijn, hoe kan ik dit op de beste manier doen? Ik verwacht dat er een betere manier bestaat dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
$false
= 'false';
$query->bindParam(':activated', $false);
?>


Alvast bedankt,
Pepijn

P.S. Ik heb erg moeten twijfelen of ik deze vraag in `Beginnen met PHP` of `Algemene PHP scripting en meer` moest zetten, maar aangezien iedere (beginnende) webdeveloper tegenwoordig PDO kan, heb ik deze vraag in dit forum gezet :)
Gewijzigd op 25/07/2013 15:06:25 door Pepijn Geheim
 
PHP hulp

PHP hulp

06/11/2024 04:29:47
 
Erwin H

Erwin H

25/07/2013 16:29:25
Quote Anchor link
Ten eerste kan je die queries aanpakken. Gezien het feit dat je selecteert op 'mail' ga ik ervanuit dat je daar een unieke index op hebt staan. Zo ja, dan kan je het hele zaakje in 1 query uitvoeren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
INSERT INTO users (mail, activation_key, token)
VALUES (:mail, :key, :token)
ON DUPLICATE KEY UPDATE
  activation_key = VALUES(key),
  token = VALUES(token)
  is_activated = :activated;

Deze query zal een nieuwe user invoeren, of, als het mailadres al bestaat, de betreffende user updaten. In dit geval worden dan de key en token gebruikt die waren opgegeven voor de insert.
Gewijzigd op 25/07/2013 16:31:35 door Erwin H
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.