Toon posts:

[mysql/newbie] Waarom werkt deze query niet?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een tabel "nieuwsbrief" met 2 velden: "id" en "email"
nu wil ik alle dubbele entrys verwijderen en dat wil ik op de volgende manier doen.

PHP:
1
2
3
4
5
$query = mysql_query("select * from nieuwsbrief");

while ($var = mysql_fetch_array($query)){
mysql_query ("DELETE FROM nieuwsbrief WHERE email = " . $var["email"] . " AND id != " . $var["id"] . "");
}


Ik heb de query getest met phpmydmin en daar werkt hij, waarom werkt hij hier niet?

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Wat moeten wij met 'werkt niet' :? Wat werkt er niet?
Zonder foutmeldingen kunnen we vanalles gaan roepen, maar dat maakt het er niet makkelijker op...

Verwijderd

Topicstarter
Sorry, hij verwijderd de dubbele entry's in phpmyadmin wel, maar in mijn scripje die ik wil runnen niet...

[ Voor 6% gewijzigd door Verwijderd op 19-01-2005 23:07 ]


  • messi
  • Registratie: Oktober 2001
  • Laatst online: 11:45
Waar geeft php dan een foutmelding?
welke regel?

Onze excuses voor het ontbreken van de ondertiteling.


  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Verwijderd schreef op woensdag 19 januari 2005 @ 23:07:
Sorry, wil verwijderd de dubbele entry's in phpmyadmin wel maar in mijn scripje die ik wil runnen niet...
Maar doet het helemaal niks? Ook geen foutmelding ofzo? Zet achter die mysql_query in die while loop eens
PHP:
1
or die(mysql_error())

dan krijg je in ieder geval eventuele foutmeldingen van mysql te zien. Daar kunnen wij dan misschien iets mee...

[ Voor 8% gewijzigd door ludo op 19-01-2005 23:09 ]


Verwijderd

Topicstarter
in regel 4 gaat er iets niet goed... ik krijg geen foutmelding.

  • Plecky
  • Registratie: Januari 2004
  • Niet online
What he said,
edit:
Ik bedoelde daar ludo mee, maar ik tik niet zo snel
en bovendien haal je nu alle entries die meer dan 1 keer voorkomen weg (niet alleen dubbel). Als ik het goed zie laat je er ook niet 1 van staan.
Verder zou je in ieder geval kunnen proberen om je statement af te sluiten met een puntkomma en quotes te gebruiken zoals:
PHP:
1
mysql_query ("DELETE FROM nieuwsbrief WHERE email = '" . $var["email"] . "' AND id != '" . $var["id"] . "';");

[ Voor 17% gewijzigd door Plecky op 19-01-2005 23:11 . Reden: Tikken met je lichaam! ]


Verwijderd

Topicstarter
ow toch wel een error: 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 '@hotmail.com AND id != 1' at line 1 :P

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Verwijderd schreef op woensdag 19 januari 2005 @ 23:10:
ow toch wel een error: 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 '@hotmail.com AND id != 1' at line 1 :P
Ja dan is het dus duidelijk... MySQL vind dat apenstaartje niet leuk. Met de oplossing van Plecky moet je een stuk verder kunnen komen. Het gaat dus om die quotes.

[ Voor 5% gewijzigd door ludo op 19-01-2005 23:13 ]


Verwijderd

Topicstarter
jo.. werkt, thanks! :)

  • Lukse
  • Registratie: Januari 2004
  • Laatst online: 12-04-2023
Heeft helemaal niets met dat apestaartje te maken.
Het veld 'email' is een string en moet dus omringd worden door quotejes.

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 01-03 18:17
Lukse schreef op woensdag 19 januari 2005 @ 23:19:
Heeft helemaal niets met dat apestaartje te maken.
Het veld 'email' is een string en moet dus omringd worden door quotejes.
Heeft toch wel met dat apenstaartje te maken ;) Waarom denk je dat de foutmelding zegt dat er near '@hotmail.com' een fout is opgetreden? Omdat het apenstaartje een gereserveerd karakter is in een query. Als er alleen een string als 'hotmail' had gestaan zou de query ook gefunctioneerd hebben zonder de quotes. Maar het is wel good practice om die quotes altijd te gebruiken om strings, hoewel het dus niet verplicht is.

[ Voor 14% gewijzigd door ludo op 19-01-2005 23:44 . Reden: Grmbl ik kan vandaag niet fatsoenlijk 'foutmelding' typen ]


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Je weet hoe je voortan dubeele entries kan voorkomen?
spoiler:
Hint: UNIQUE

ASCII stupid question, get a stupid ANSI!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

ludo schreef op woensdag 19 januari 2005 @ 23:42:
Heeft toch wel met dat apenstaartje te maken ;) Waarom denk je dat de foutmelding zegt dat er near '@hotmail.com' een fout is opgetreden? Omdat het apenstaartje een gereserveerd karakter is in een query. Als er alleen een string als 'hotmail' had gestaan zou de query ook gefunctioneerd hebben zonder de quotes. Maar het is wel good practice om die quotes altijd te gebruiken om strings, hoewel het dus niet verplicht is.
In ieder fatsoenlijk DBMS is het verplicht, en volgens mij mag het in MySQL ook niet zonder quotes, ook niet met een string van maar één woord. En als het wel mag, dan is het weer een leuk puntje voor op de lijst die ACM bijhoudt. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1