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?
Jij ook kris! Jij deed eigenlijk veel meer moeite.
Het enige probleem is volgens mij dat num_rows ipv affected_rows alle tabellen geeft en niet alleen met die value.
Hoewel het kan zijn dat het wel lukt als je SELECT gebruikt.
Igg heel erg bedankt allemaal!
Je kunt je niet voorstellen hoe blij ik ben na al die uren proberen x'D
Het punt is: num_rows kan uitgelezen worden uit de resource die wordt teruggegeven door mysql_query.
Je kan 20 query's uitvoeren, die je in 20 verschillende resource variabelen zet.
Achteraf kan je van die resource met num_rows zien hoeveel rijen er zijn. Je hebt daar geen verbinding met de database meer voor nodig.
Met INSERT lukt dat niet.
mysql_affected_rows Zal je enkel vertellen wat de laatste actie was van mysql. Dit moet dan ook gebeuren onmiddellijk na het uitvoeren van de query.
Dit vergt ook een verbinding met de database.
Ik heb het in je vorige topic gezegd, ik heb het tegen je in de pm gezegd, wat is er nou zo ontzettend moeilijk aan de hendleiding lezen en wat ik zei?
Dat is nogal wiedes hé dat dat niet werkt.
Ik zei dat je moest kijken wat mysql_query teruggaf. En testen wat mysql_error / mysql_errno teruggaf.
> Hey,
>
> Nog even over die dubbele gegevens in mysql.
> Ik wilde kijken of een username al bestond in de database.
>
> De manier die jij vertelde was volgens mij met try en catch.
>
> Hoe werkt dit precies? want dit:
>
>
Quote:
try {
> $sql = "INSERT INTO account (Nickname) VALUES ('lalala')";
> }
> catch(Exception $e) {
> echo $e->getMessage();
> }
>
> Werkt blijkbaar niet.
>
> Alvast bedankt!
Waarom ga je dan nog steeds die onzin doen?
<?php
// Configuratie
$db_user = 'root';
$db_password = '';
$db_server = 'localhost';
$db_database = 'Wizzardz'; // Lekker dubbelzinnige naam
$link = mysq_connect($db_server, $db_user, $db_password); // Dit is een resource
if($link) // on the fly type cating van php
{
// We hebben verbinding
if(mysql_select_db($db_database, $link))
{
// We kunnen een database selecteren
$query = "INSERT INTO account (Nickname) VALUES ('pipooo')"; // Values met mysql_real_escape_string erin stoppen als ze van de gebruiker vandaan komen en met sprintf
if(mysql_query($query, $link)) // Het is een insert dus of true of false
{
echo 'Insert is gelukt!'; // Afhandelen via template parser
}
else
{
echo 'Insert is mislukt!';
var_dump(mysql_error($link), mysql_errno($link)); // Dit is alleen voor testen. Kijk wat je hieruit krijgt. Daarmee kan je checks doen.
// TOON NOOIT (my)sql FOUTEN OF PHP FOUTEN AAN DE GEBRUIKER!
}
}
else
{
echo 'Db selecteren was niet mogelijk. Nu doen we nette foutafhandeling, dus geen die';
}
mysql_close($link); // Altijd net
}
else
{
echo 'Help, we kunnen niks. Maar weer geen die';
}
?>
Dit tik ik zo uit mijn hoofd, terwijl ik nooit mysql functies gebruik. Alle informatie kan je zo vinden op de php pagina's. Dat zijn dus die linkies in dat script hierboven. Als je daar op klikt dan kom je op php.net uit. Dat is de handleiding. Het mooie aan de handleiding is dat je ook voorbeelden hebt. Zie ze. Vergelijk dit script met dat.
Het enige wat jij dus nu moet doen is kijken wat voor mysql error je krijgt.
Gast sorry voor mijn gezeik van eerder ik kon het gewoon niet voor elkaar krijgen en wilde niet meer verder janken.
Iig, ik kan je echt niet genoeg bedanken want hij werkt nu perfect.
Om te checken of een record al bestaat, werkt het volgens mij het beste als je je veld de UNIQUE eigenschap meegeeft. Als je dan probeert te inserten in je tabel, en hij werkt niet omdat een UNIQUE-error optreedt (omdat er al eenzelfde record bestaat), weet je genoeg. Maar gelukkig werkt ie al, zie ik :).
?
Onbekende gebruiker
07-02-2011 08:26
Stephan G op 07/02/2011 00:58:11
Om te checken of een record al bestaat, werkt het volgens mij het beste als je je veld de UNIQUE eigenschap meegeeft. Als je dan probeert te inserten in je tabel, en hij werkt niet omdat een UNIQUE-error optreedt (omdat er al eenzelfde record bestaat), weet je genoeg. Maar gelukkig werkt ie al, zie ik :).
Het script hierboven, van mij, gaat er ook inderdaad vanuit dat in de database het veld UNIQUE of primair is.