Checken dubbele records
Ik ben redelijk nieuw in php, dus het zal een domme fout zijn. Maar ik probeer te kijken of een nickname in mijn database al bestaat. Hiervoor heb ik dit php script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
//Connect to database
$db = new PDO('mysql:host=localhost;dbname=Wizzardz','root','');
//Check if name excists
if(mysql_num_rows(mysql_query("SELECT Nickname FROM account WHERE Nickname = 'Bram'"))){
echo "failed";
} else {
$sql = "INSERT IGNORE INTO account (Nickname) VALUES ('$_POST[Nickname]')";
}
$db = NULL;
?>
//Connect to database
$db = new PDO('mysql:host=localhost;dbname=Wizzardz','root','');
//Check if name excists
if(mysql_num_rows(mysql_query("SELECT Nickname FROM account WHERE Nickname = 'Bram'"))){
echo "failed";
} else {
$sql = "INSERT IGNORE INTO account (Nickname) VALUES ('$_POST[Nickname]')";
}
$db = NULL;
?>
Hij zegt dat hij niet kan connecte in de regel met if(mysql_num_rows(mysql_query("S...
Wat doe ik fout?
Bedankt alvast!
Lijkt mij een fout database-model.
Maar wat bedoel je daar mee?
Dit zijn de errors:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\WizzardzAccountCreateCode.php on line 12
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\WizzardzAccountCreateCode.php on line 12
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\WizzardzAccountCreateCode.php on line 12
...ook nog een pas invoeren. root is je username en waar nu xxwachtwoord staat moet je MySQL wachtwoord staan. Of heb je die even express weggehaald ivm Inbraak op je privacy?
Wat ik verder zie is dat alles "on line 12" is. Maar die regel staat hier niet bij. Kan je die posten? En als deze pagina die je nu gepost hebt dus niet 'wizzardcreate...' heet dan moet je die pagina even posten. Hier kunnen we nu niks mee.
Gewijzigd op 20/01/2011 18:20:16 door Jurrian Nijland
if(mysql_num_rows(mysql_query("SELECT Nickname FROM account WHERE Nickname = 'Bram'")))
Maar ik heb nog nooit een wachtwoord ingesteld. En trouwens die onderste regel:
$sql = "INSERT IGNORE INTO account (Nickname) VALUES ('$_POST[Nickname]')"
Doet het wel als ik die los van de rest zet. Dus het kan niet aan het w8woord liggen.
Quote:
Access denied for user 'ODBC'@'localhost...
Dat betekent dat je geen toegang krijgt met de database op localhost.
$db = new PDO('mysql:host=localhost;dbname=Wizzardz','root','');
$sql = "INSERT IGNORE INTO account (Nickname) VALUES ('$_POST[Nickname]')";
Doet hij het wel. ;)
Neem contact op met je hosting provider om hulp te krijgen met het aanmaken van een wachtwoord op je database
Gewijzigd op 20/01/2011 18:24:25 door Thijs Damen
Bedankt voor je hulp =) Ghe, was al te laat om dat te typen =P
Ik heb waarschijnlijk per ongelijk iets weg gehaald wat niet weg zou moeten zijn.
Laat me ff checken dan respond ik zo wel xD
Doe je best =D
unique kunt gebruiken.
Een nickname is uniek, dat betekend dus dat die of de primary key is of dat je in de database gewoon Ja maar als je een account aan gaat maken, en de naam bestaat al wil je daar een melding van krijgen zodat je er iets anders van kunt maken. ;)
Ja, je krijgt een error terug.
Het zou heel wat fijner zijn als je een mooi schermpje kreeg met vul andere naam in.
Je toont nooit de error van php / mysql aan de gebruiker.
$resultaat = $db->exec($sql)
Maar hij geeft nog steeds dezelfde errors
Toevoeging op 20/01/2011 19:17:58:
Oh en hoe werkt dat dan weer?
Sorry ben echt beginneling xD
bram unknown:
Oh en hoe werkt dat dan weer?
Dat kan je met de try, catch doen. Maar ook dingen als set_error_handler zullen je verder kunnen helpen.
Uhm, hoe tel ik die dingen dan als ik die error daar bij krijg?
Code (php)
1
2
3
4
2
3
4
<?php
#Waarbij $query je uitgevoerde query is of je maakt je Query met count en fetcht dat dan..
if(mysql_num_rows($query) == 1)
?>
#Waarbij $query je uitgevoerde query is of je maakt je Query met count en fetcht dat dan..
if(mysql_num_rows($query) == 1)
?>