Gå til innhold

Trenger hjelp med SQL error


Anbefalte innlegg

Jeg har fulgt en tutorial på hvordan jeg skal lage et brukersystem.

Det er nermest copy-paste fra tutorialen, men jeg har gjort et par små forandringer.. Uansett, når jeg har skrevet inn informasjonen,brukernavn, passord, email osv.., og trykker register, får jeg denne meldingen:

 

"You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '')' at line 1"

 

Hva kan være problemet her? Etter som jeg fårstår er det ikke selve php-scriptet som har noen problemer, eller?

 

takk

Lenke til kommentar
Videoannonse
Annonse

aha..

 

skal vi se:

 

Jeg har en config.php som blir includert øverst på alle sidene:

<?php

$l = mysql_connect ( "mysql.hosted.servetheworld.net" , "bruker" , "pass" ) or die("Error connecting: <br><br>".mysql_error());
mysql_select_db( "database" ) or die("Error getting db: <br><br>".mysql_error());

?>


 

Øverst i register.php

 

include 'config.php';
//Are they just getting here or submitting their info?
if (isset($_POST["username"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$cpassword = $_POST["cpassword"];
$name = $_POST["name"];
$email = $_POST["email"];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("d, m y");
//Was a field left blank?
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL|$name==NULL) {
echo "A field was left blank.";
}else{
//Do the passwords match?
if($password!=$cpassword) {
echo "Passwords do not match";
}else{
//Has the username or email been used?
$checkuser = mysql_query("SELECT username, COUNT(*) FROM users WHERE username='$username'");


$checkemail = mysql_query("SELECT email, COUNT(*) FROM users WHERE email='$email'");


if ($checkemail>0|$checkuser>0) {
echo "The username or email is already in use";
}else{

//Everything seems good, lets insert.
$query = "INSERT INTO users (Username, Password, Email, IP, Date, Name) VALUES('$username','$password','$email','$IP','$Date','$Name)";
mysql_query($query) or die(mysql_error());
echo "The user $username has been successfully registered.";
}
}

 

 

 

takk

Lenke til kommentar

Tuusen takk!!:)

 

 

Edit: Nytt problem... Hvordan skal jeg få til at du ikke får registrere samme brukernavn to ganger?

 

dette har jeg i koden:

//Has the username or email been used?
$checkuser = mysql_query("SELECT username, COUNT(*) FROM Users WHERE username='$username'");


$checkemail = mysql_query("SELECT email, COUNT(*) FROM Users WHERE email='$email'");


if ($checkemail>0|$checkuser>0) {
echo "The username or email is already in use";

 

Men det virker ikke..:(

 

Forslag?

 

Takk

Endret av $k$
Lenke til kommentar
Tuusen takk!!:)

 

 

Edit: Nytt problem... Hvordan skal jeg få til at du ikke får registrere samme brukernavn to ganger?

 

dette har jeg i koden:

//Has the username or email been used?
$checkuser = mysql_query("SELECT username, COUNT(*) FROM Users WHERE username='$username'");


$checkemail = mysql_query("SELECT email, COUNT(*) FROM Users WHERE email='$email'");


if ($checkemail>0|$checkuser>0) {
echo "The username or email is already in use";

 

Men det virker ikke..:(

 

Forslag?

 

Takk

5368339[/snapback]

 

Du må lese ut informasjonen med feks mysql_fetch_array...:)

//Has the username or email been used?
$checkuser = mysql_query("SELECT username, COUNT(*) FROM Users WHERE username='$username'");
if($line = mysql_fetch_array($checkuser, MYSQL_ASSOC))
{echo "Error, brukernavnet er opptatt";}

$checkemail = mysql_query("SELECT email, COUNT(*) FROM Users WHERE email='$email'");
if($line = mysql_fetch_array($checkemail, MYSQL_ASSOC))
{echo "Error, email er opptatt";}

Lenke til kommentar

da får jeg følgende feil:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /register.php on line 22

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /register.php on line 26

 

 

Line 17 - 29:

 

if($password!=$cpassword) {
echo "Passwords do not match";
}else{
//Has the username or email been used?
$checkuser = mysql_query("SELECT username, COUNT(*) FROM Users WHERE username='$username'");
if($line = mysql_fetch_array($checkuser, MYSQL_ASSOC))
{echo "Error, brukernavnet er opptatt";}

$checkemail = mysql_query("SELECT email, COUNT(*) FROM Users WHERE email='$email'");
if($line = mysql_fetch_array($checkemail, MYSQL_ASSOC))
{echo "Error, email er opptatt";
}else{

 

:hmm:

Endret av $k$
Lenke til kommentar
da får jeg følgende feil:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /register.php on line 22

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /register.php on line 26

 

5368635[/snapback]

Du har connecta med mysql_connect og valgt database med mysql_select_db?

 

edit: la til spørsmålstegn :p

Endret av Axentrix
Lenke til kommentar
da får jeg følgende feil:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /register.php on line 22

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /register.php on line 26

 

5368635[/snapback]

Du har connecta med mysql_connect og valgt database med mysql_select_db

5368916[/snapback]

 

ja...?

Lenke til kommentar

Jeg ville vel forsåvidt heller sjekket med mysql_num_rows:

if(mysql_num_rows($checkuser) > 0)
{echo "Error, brukernavnet er opptatt";}

og samme for emailsjekken.

 

Det er også greit å legge på en or die(mysql_error()); rett etter mysql_query

 

Den feilen får du vel opp, fordi brukernavn / Email ikke eksisterer, dermed blir $checkuser / $checkemail satt til false (Altså ingen mysql result resource)

 

EDIT: Uff... Ble mye fram og tilbake her... :(

Endret av kakkle
Lenke til kommentar
Jeg ville vel forsåvidt heller sjekket med mysql_num_rows:

if(mysql_num_rows($checkuser) > 0)
{echo "Error, brukernavnet er opptatt";}

og samme for emailsjekken.

 

Det er også greit å legge på en or die(mysql_error()); rett etter mysql_query

 

Den feilen får du vel opp, fordi brukernavn / Email ikke eksisterer, dermed blir $checkuser / $checkemail satt til false (Altså ingen mysql result resource)

 

EDIT: Uff... Ble mye fram og tilbake her... :(

5369090[/snapback]

 

Det kan stemme, men hva må jeg da gjøre? bare ignorere den?

 

Edit:

Prøvde med num_rows også, men det ble samme melding:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /register.php on line 22

 

Edit2:

Prøvde å ignorer feilmeldingene, men jeg kan fortsatt lage flere brukere med både samme navn og epost..

Endret av $k$
Lenke til kommentar

Sjekk med den koden jeg skrev over (Med mysql_num_rows), så skal det funke greit ;)

Mysql_num_rows teller antall rader du får ut fra spørringen

mysql_num_rows

 

For å bruke mysql_error() :

$checkuser = mysql_query("SELECT username, COUNT(*) FROM Users WHERE username='$username'") or die(" Feil i spørring ! <br> Mysql sa: <br>".mysql_error());

Lenke til kommentar
Edit:

Prøvde med num_rows også, men det ble samme melding:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /register.php on line 22

Da må du sjekke spørringen med mysql_error(), bruk det jeg la ut i posten over.

Det kan være greit å legge spørringen til en veriabel først, slik at du lettere kan skrive ut akkurat det som sendes til mysql:

$query = "SELECT username, COUNT(*) FROM Users WHERE username='$username'";
$checkuser = mysql_query($query) or die(" Feil i spørring ! <br> Spørring: $query<br> Mysql sa: <br>".mysql_error());

 

EDIT: Og du kan droppe COUNT(*)

Endret av kakkle
Lenke til kommentar

Endelig forandring! Nå fikk jeg svar på hva som er galt.

 

Feil i spørring !

Mysql sa:

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

 

 

Forstår du noe av dette?

 

Lurer på om det kanskje har noe med den COUNT(*) greia inni...?

 

Edit: Prøver nå med å droppe COUNT

Endret av $k$
Lenke til kommentar

:w00t: Det virker!

 

$checkuser = mysql_query("SELECT email FROM Users WHERE username='$username'");
if($line = mysql_fetch_array($checkuser, MYSQL_ASSOC))
{echo "Error, brukernavnet er opptatt";
}else{


$checkemail = mysql_query("SELECT email FROM Users WHERE email='$email'");
if($line = mysql_fetch_array($checkemail, MYSQL_ASSOC))
{echo "Error, email er opptatt";
}else{

 

Tusen takk alle sammen!:)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...