Beste manier PDO
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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();
?>
$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
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
Code (php)
1
2
3
4
5
6
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;
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