Door
Bart Willemsen
op 05-09-2011 20:55
gewijzigd op 05-09-2011 23:08
1.716 views
Hallo,
Ik heb een klein probleempje met mijn script en weet niet waar het aan ligt..
Ik voer namelijk een INSERT query uit en opzich gaat dat goed. De data komt in de database maar om een 1 of andere reden returnt hij toch false. Hier is de code met de query:
1. backticks horen niet thuis in sql
2. het is ook niet handig om hoofdletters en kleine letters doorelkaar te gebruiken bij het benoemen van database/tabel/veldnamen
3. onderdruk geen fout, dus haal die @ uit je code
4. niet goed is bij jou niet fout, m.a.w. schrijf nette duidelijk foutafhandeling
5. addslashes, het moet niet gekker worden, je dient op die plek _real_escape_string te gebruiken
6. zet geduren het testen van je code de debug modus aan, zodat je de pijn punten van je code te zien krijgt
1. Ik hoorde juist dat je die wel moest gebruiken om eventuele reserved keywords te omzeilen?
2. Misschien heb je daar gelijk in, maar ik gebruikte het vooral voor mijzelf zodat ik bijvoorbeeld snel kan zien bij welk component de tabel hoort.
3. Ik handel de fouten af op mijn eigen manier. Ik heb de $db->SetError() voor het opvangen van fouten, en kan ze (desnoods afgeschermd voor normaal publiek) zien met $db->Error(). Echter geeft hij in dit geval geen MySQL error terug...
4. Waar in de code zie je dat?
5. Weet ik, alleen op een een of andere reden doet mysql_real_escape_string() het niet op mijn host.. :/
6. Dat kan ik nog wel eens proberen.. Heb tot nu toe alleen een var_dump voor $postentry die me informatie geeft.. :P
Reserved words gebruiken in tabel of attribuutnamen is onverstandig. Om dat daarna dan weer te omzeilen met backticks of quotes is onhandig. Kortom doe niet! Upper en lower case door elkaar is ook niet handig in bijv GUESTBOOK_entries, niet doen! Wil je graag de tabelnaam erbij zien prefix dan gewoon: guestbook.entries ipv GUESTBOOK_entries. Onderduk nooit fouten met @ en een verdediging van "Ik handel de fouten af op mijn eigen manier" is een illusie, @ gebruiken onderdukt foutmeldingen dus die kan je ook niet op je eigen manier afhandelen. Neem gewoon even aan wat Noppes zegt ipv alles te verdedigen!!
Ok, ik begrijp het. Het is misschien een beetje onhandig inderdaad.. maar zo heb ik het aangeleerd helaas.. :/
Ik heb de backticks verwijdered uit de query en zal dat ook bij de rest doen (voor zover ik weet gebruik ik inderdaad toch geen reserved keywords). De uppercase wordt wat moeilijker om direct aan te passen aangezien ik dan meteen mijn hele database moet omgooien..
Mijn excuses. Ik wou niemand aanvallen of zo, en ik sta open voor alle advies, begrijp dat niet verkeerd. Ik zie en lees alleen zo veel verschillende manieren dat het moeilijk is om daar de beste manier uit te halen..
Deprecated: Function eregi() is deprecated in webscripts/WEBSITE_gastenboek.php on line 27
Warning: mysql_insert_id() [function.mysql-insert-id]: Access denied for user '<snip>'@'localhost' (using password: <snip>) in classes/class.mysql.php on line 176
Warning: mysql_insert_id() [function.mysql-insert-id]: A link to the server could not be established in classes/class.mysql.php on line 176
Volgens mij zijn die warnings de reden waarom mijn function "false" returned... alsof de rechten niet goed zijn of zo lijkt het..