In mijn vorige topic probeerde ik te checken of een record al bestaat in een tabel.
Dit was me na veel uren proberen niet gelukt. Ik heb het een beetje aangepast en krijg nu een nieuwe error.
Hierna komt natuurlijk nog het stukje waarin staat dat dat het aantal rijen niet groter mag zijn dan 0, want in dat geval bestaat er al een account met die naam. Nu krijg ik deze error:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\WizzardzAccountCreateCode.php on line 19
Hij zegt dus dat het een boolean is terwijl het een int moet zijn. Wat doe ik fout?
Retrieves the number of rows from a result set. This command is only valid for statements like SELECT or SHOW that return an actual result set. To retrieve the number of rows affected by a INSERT, UPDATE, REPLACE or DELETE query, use mysql_affected_rows().
Voor een deel is dat een probleem van je naamgeving. De naam van je variabelen.
Daardoor raak je zelf in verwarring.
Het is geen goed idee een return van een mysql_query() $result te noemen.
mysql_query() geeft je een resource weer. Daarom wordt het meestal $res genoemd.
<?php
// een vrij gebruikelijke vorm
$sql = "SELECT ... FROM ...";
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)) {
...
}
?>
Die resource wordt dus teruggegeven bij een SELECT. Daar kan je dan ook informatie uit fetchen.
Bij een insert krijg je geen resource terug.
mysql_affected_rows() vraagt dus niet om een resource van (de return van) een INSERT of UPDATE ..., maar vraagt je de database link.