Wat is er fout in mijn mySQL query?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joannis Orlandos

Joannis Orlandos

15/07/2010 19:17:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$register_query = "INSERT INTO users (id, username, password, first_name, last_name, email_adress, xfire_adress, msn_adress, skype_adress,
         hobbys, html_skills, css_skills, php_skills, mysql_skills, c_skills, bat_skills, ip_adress, confirm_hash, is_activated, date_created)
         VALUES ('', '$username', '$password', '$first_name', '', '$email', '', '', '', '', '', '', '', '', '', '', '', '$user_ip', '$hash', 0, NOW())";


Dit is de database:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
      ID      int(5)                 Nee      Geen      auto_increment        Bekijk unieke waarden         Veranderen         Verwijderen         Primaire sleutel         Unieke waarde         Index        Volledige tekst
    username     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    password     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    first_name     varchar(20)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    last_name     varchar(25)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    email_adress     varchar(40)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    xfire_adress     varchar(25)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    msn_adress     varchar(40)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    skype_adress     varchar(30)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    hobbys     text     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    html_skills     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    css_skills     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    php_skills     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    mysql_skills     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    c_skills     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    bat_skills     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    ip_adress     varchar(15)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    confirm_hash     varchar(100)     latin1_swedish_ci         Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    is_activated     int(1)             Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
    date_created     date             Nee     Geen         Bekijk unieke waarden     Veranderen     Verwijderen     Primaire sleutel     Unieke waarde     Index     Volledige tekst
 
PHP hulp

PHP hulp

29/04/2024 01:46:01
 
Victor Php

Victor Php

15/07/2010 19:42:55
Quote Anchor link
Je hebt een heleboel waardes met niks erin.. ('')
Die kan je ook weg laten.. (Volgens mij)
 
Erik Rijk

Erik Rijk

15/07/2010 19:51:51
Quote Anchor link
echo je query eens.. dan zie je het denk ik wel :)
Heb je phpmyadmin?

mysql_error is ook erg handig om te gebruiken, dat zie je wat er mis gaat
 
Joannis Orlandos

Joannis Orlandos

15/07/2010 19:56:39
Quote Anchor link
Ik heb ook al mijn query ge-echo'd.
Ja, ik heb phpmyadmin.
En mysql_error, op kun je een voorbeeldje maken om hem te gebruiken?

Victor: Nee, dat kan niet :(
Helaas....
Moet alle velden invullen!
 
Wouter De Schuyter

Wouter De Schuyter

15/07/2010 19:59:04
Quote Anchor link
Victor Php op 15/07/2010 19:42:55:
Je hebt een heleboel waardes met niks erin.. ('')
Die kan je ook weg laten.. (Volgens mij)

Die kan je helemaal niet weglaten!

Joannis Orlandos op 15/07/2010 19:56:39:
Ik heb ook al mijn query ge-echo'd.
Ja, ik heb phpmyadmin.
En mysql_error, op kun je een voorbeeldje maken om hem te gebruiken?

Victor: Nee, dat kan niet :(
Helaas....
Moet alle velden invullen!

Je voert dus nooit een controle uit op je query?

Vb
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$query
= mysql_query("SELECT * FROM x WHERE x = x");
if(!$query) {
// Fail
echo "MySQL Error: " . mysql_error();
}

else {
// Success
// Doe wat je wilt doen met je query

}
?>
Gewijzigd op 15/07/2010 20:10:23 door Wouter De Schuyter
 
Joannis Orlandos

Joannis Orlandos

16/07/2010 13:43:32
Quote Anchor link
Jawel, doe ik wel.
Alleen zonder mysql_error();
Het is gewoon een lapje tekst :P
Wel handig dat is die mysql_error(); gebruik...
 
Johan Dam

Johan Dam

16/07/2010 13:54:32
Quote Anchor link
query controle is altijd handig, maar doe het dan wel op een wat makkelijkere manier...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query("SELECT * FROM x WHERE x = x") OR die(mysql_error());
?>


ipv van die kan je ook trigger_error of je eigen gemaakte error-functie gebruiken.
 
Joannis Orlandos

Joannis Orlandos

16/07/2010 13:59:20
Quote Anchor link
Eh...
Mijn vraag is nu.
Klopt de query?
Ik krijg de error:

Column count doesn't match value count at row 1

Op internet staat een voorbeeld over wat de fout inhoud...
Het antwoord, is dat ik het goed doe...
 
Joren de Wit

Joren de Wit

16/07/2010 14:03:08
Quote Anchor link
Joannis Orlandos op 16/07/2010 13:59:20:
Column count doesn't match value count at row 1


Dat houdt in dat het aantal kolommen waarin je iets in wilt voegen niet overeenkomt met het aantal waarden dat je opgeeft. Met andere woorden, het aantal velden in de INSERT INTO tabel (...) komt niet overeen met het aantal waarden in VALUES (...).
 
Joannis Orlandos

Joannis Orlandos

16/07/2010 14:06:03
Quote Anchor link
Ja, bedankt!
Ik vind het trouwens wel raar, want dat probleem had ik volgens mij al opgelost...
 
Joannis Orlandos

Joannis Orlandos

16/07/2010 14:20:33
Quote Anchor link
Ik zit met nog een probleem.
Hij schrijft de first_name niet op...

Graag niet bumpen; twee berichten van jezelf na elkaar binnen 24 uur plaatsen. Heb je een toevoeging aan je vorige bericht, gebruik dan het 'wijzigen' icoontje.[/modedit]
Gewijzigd op 16/07/2010 14:25:17 door Joren de Wit
 
Joren de Wit

Joren de Wit

16/07/2010 14:26:49
Quote Anchor link
Zoals al eerder gezegd: echo je query eens, dan zie je wellicht waarom het fout gaat. Mijn vermoeden is dat $first_name niet de juiste waarde heeft...

Haal verder je variabelen buiten quotes, dat is ten eerste duidelijker en wil ten tweede ook nog wel eens problemen voorkomen.
 
Joannis Orlandos

Joannis Orlandos

16/07/2010 14:31:13
Quote Anchor link
De string was inderdaad het probleem! :)
Bedankt!
 
Joannis Orlandos

Joannis Orlandos

19/07/2010 14:37:26
Quote Anchor link
Ik heb nog een fout in mijn code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$username = strtolower($_POST['username']);
$username = trim($username);
$email = $_POST['email'];
$query = "SELECT ID FROM users WHERE username = '$username' AND email_adress = '$email'";
$query_result = mysql_query($query);

// CHECK IF USERNAME OR EMAIL ADRESS IS ALREADY IN USE
if($query_result && mysql_num_rows($query_result) > 0)
{


De bedoeling is dat hij een username of email adres ophaalt, en kijkt of hij al in gebruik is...
Hij zegt altijd dat er niks in gebruik is, ONDANKS dat hij wel 10 keer regegistreerd is!
 
Joren de Wit

Joren de Wit

19/07/2010 14:55:19
Quote Anchor link
Komt dat niet door de strtolower() bij de username? Bovendien kijk je nu alleen naar de combinatie van gebruikersnaam en e-mail adres. Dat is wat je wilt?

Let verder op SQL injectie, dit scriptje is zo lek als een mandje. Beter doe je het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$username
= mysql_real_escape_string($_POST['username']);
$email = mysql_real_escape_string($_POST['email']);

$sql = "
  SELECT id
  FROM users
  WHERE username = '"
.$username."'
  AND email = '"
.$email."'
"
;
?>
 
Joannis Orlandos

Joannis Orlandos

19/07/2010 21:24:12
Quote Anchor link
maakt het dan wat uit of ik naar de volgende regel ga in mijn query?
 
P Lekensteyn

P Lekensteyn

19/07/2010 21:26:13
Quote Anchor link
Nee, maar voor het overzicht is het wel aan te raden.
 
Joannis Orlandos

Joannis Orlandos

19/07/2010 21:45:48
Quote Anchor link
oke...
Dan snap ik de fout in de query nogsteeds niet...

Enne...
Hoe zorg ik dat hij zoekt naar een van de 2?
Dus, eentje, OF met dezelfde username en email, OF alleen dezelfde username, OF alleen dezelfde email?
Gewijzigd op 19/07/2010 22:11:40 door Joannis Orlandos
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.