gebruik van mysqli
Echter de code is oorspronkelijk niet mysqli maar mysql en dus verouderd. Ik heb mysql_result met mysqli_result en mysql_query met mysqli_query vervangen.
Het werkt nog niet en ik hoop wat hulp te krijgen.
Dit is de code:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
if (mysqli_result(mysqli_query("SELECT COUNT(`id`) FROM `users` WHERE `email` = '$send_email' AND `activ_code` = '$send_active_code' AND `active` = 0"), 0) == 1) {
mysqli_query ("UPDATE `users` SET `active` = 1 WHERE `email` = '$send_email' ");
return true;
} else
{
return false; }
mysqli_query ("UPDATE `users` SET `active` = 1 WHERE `email` = '$send_email' ");
return true;
} else
{
return false; }
de foutmelding is als volgt:
Quote:
Fatal error: Call to undefined function mysqli_result() in ...
wat betekent deze foutmelding?
Op welke manier kan ik de 2 variabelen goed vegelijken?
PS: Sla je mysqli_query() altijd op in een aparte variabele. Dat is makkelijker voor eventuele foutafhandeling.
Ook kan je natuurlijk de OO-manier gebruiken, en een nieuwe classe maken die de mysqli-class extend. Waarmee je de query() method overschrijft. Scheelt je weer voor elke querie een foutafhandeling te schrijven.
Gewijzigd op 15/04/2016 12:06:15 door - Ariën -
Dt is bij MySQLi ook anders dan bij MySQL.
Wanneer je een MySQL verbinding maakt kan je er geen MySQLi acties op uitvoeren.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$connection = mysqli_connect('host', 'user', 'password', 'database');
if( $connection === false ){
// Geen connectie kunnen maken
}
$query ="SELECT COUNT(`id`) FROM `users` WHERE `email` = '$send_email' AND `activ_code` = '$send_active_code' AND `active` = 0";
if( ($result = mysqli_query($query)) === false ){
// Fout in query
}
$count = mysqli_num_rows($result);
if( count($count) > 0 ){
mysqli_query ("UPDATE `users` SET `active` = 1 WHERE `email` = '$send_email' ");
return true;
}else{
return false;
}
$connection = mysqli_connect('host', 'user', 'password', 'database');
if( $connection === false ){
// Geen connectie kunnen maken
}
$query ="SELECT COUNT(`id`) FROM `users` WHERE `email` = '$send_email' AND `activ_code` = '$send_active_code' AND `active` = 0";
if( ($result = mysqli_query($query)) === false ){
// Fout in query
}
$count = mysqli_num_rows($result);
if( count($count) > 0 ){
mysqli_query ("UPDATE `users` SET `active` = 1 WHERE `email` = '$send_email' ");
return true;
}else{
return false;
}
mysqli_affected_rows te kijken of er werkelijk iets bijgewerkt is. Scheelt zinloos werk, en een mogelijke race condition.
Een count() over een int? Lijkt me vreemd om te doen. Overigens lijkt het me handiger om gewoon altijd te updaten en te controleren met - $count (inderdaad) geen array is, maar een integer
- een COUNT() query (in MySQL) ALTIJD 1 resultaatrij (en -kolom) oplevert, of er nu matches zijn of niet
Wellicht is het ook beter om het id op te vragen, en dit als argument voor het UPDATE statement te gebruiken in plaats van het e-mailadres.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
if (
SELECT COUNT(id)
FROM users
WHERE email = $send_email
AND activ_code = $send_active_code
AND active = 0
) {
UPDATE users
SET active = 1
WHERE email = $send_email
}
SELECT COUNT(id)
FROM users
WHERE email = $send_email
AND activ_code = $send_active_code
AND active = 0
) {
UPDATE users
SET active = 1
WHERE email = $send_email
}
Dat kun je vereenvoudigen tot één UPDATE met de WHERE-condities uit de if:
@Ward: Precies wat ik wilde zeggen :)