Checken dubbele records
Hey,
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:
Hij zegt dat hij niet kan connecte in de regel met if(mysql_num_rows(mysql_query("S...
Wat doe ik fout?
Bedankt alvast!
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.
Bedankt voor de ongelovelijk snelle reactie!
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
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
Dat eerste betekent dat je geen toegang krijgt bij je database. Waarschijnlijk moet je hierbij:
...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.
...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
Sorry dat is dus deze regel:
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.
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.
Als je jouw eerste foutmelding ziet;
Dat betekent dat je geen toegang krijgt met de database op localhost.
Quote:
Access denied for user 'ODBC'@'localhost...
Dat betekent dat je geen toegang krijgt met de database op localhost.
Dat begrijp ik. xD Maar zodra ik dit in typ:
$db = new PDO('mysql:host=localhost;dbname=Wizzardz','root','');
$sql = "INSERT IGNORE INTO account (Nickname) VALUES ('$_POST[Nickname]')";
Doet hij het wel. ;)
$db = new PDO('mysql:host=localhost;dbname=Wizzardz','root','');
$sql = "INSERT IGNORE INTO account (Nickname) VALUES ('$_POST[Nickname]')";
Doet hij het wel. ;)
Bram, de laatste $sql regel word nooit uitgevoerd. ik mis je mysql_query hiervoor.
Neem contact op met je hosting provider om hulp te krijgen met het aanmaken van een wachtwoord op je database
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
@ Thijs
Bedankt voor je hulp =) Ghe, was al te laat om dat te typen =P
Bedankt voor je hulp =) Ghe, was al te laat om dat te typen =P
Jullie hebben gelijk.
Ik heb waarschijnlijk per ongelijk iets weg gehaald wat niet weg zou moeten zijn.
Laat me ff checken dan respond ik zo wel xD
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
Een nickname is uniek, dat betekend dus dat die of de primary key is of dat je in de database gewoon unique kunt gebruiken.
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.
Beetje onprofesioneel vind je niet? :p
Het zou heel wat fijner zijn als je een mooi schermpje kreeg met vul andere naam in.
Het zou heel wat fijner zijn als je een mooi schermpje kreeg met vul andere naam in.
Je krijgt een error van de db terug. Die kan je dan met php afvangen.
Je toont nooit de error van php / mysql aan de gebruiker.
Je toont nooit de error van php / mysql aan de gebruiker.
Oke dat de regel het deed was heel logisch. Ik had nog niet verteld dat hij t echt uit moest voeren. ;) Met dit regeltje:
$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
$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.
Ga door de tabel met WHERE gebruikersnaam = 'mysql_real_escape_string($_POST['gebruikersnaam'])' en tel het aantal records dat je terug krijgt. Als je 1 krijgt dan geef je de error als je 0 krijgt ga je verder.
Dus:
Dus:
Code (php)
Gewijzigd op 20/01/2011 19:39:00 door Jasper DS
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)
?>




