PHP/MYSQL is vrij onlogisch in het toepassen van quotes, double qoutes en backticks zoals " ' ` .
Als ik CREATE TABLE `$var` doe dan werkt dat, maar bij een andere query zoals INSERT INTO niet.
Ik krijg de volgende foutmelding
Fout:
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 ''.` `.' (linkoms, linkadd) VALUES ( 'aaa', 'http://www.aa.com' )' at line 1
zijn toegevoegd aan de database (regel 2)
en je kunt een hele ketting van al dan niet geneste functies plaatsen tussen de haakjes van if(), maar uiteindelijk moet het iets worden dat voor PHP is terug te leiden tot
Oef Johan. Neem een bak koffie. Ga rustig achterover leunen, handen in de nek en creëer jezelf een beeld van een mini internet met drie computers:
- een web/php server
- een mysql server
- een client (browser/gebruiker)
De drie hebben NIETS MET ELKAAR te maken
Ze kunnen alleen commando's uitvoeren.
Dus als PHP het SQL commando goed in elkaar knutselt dan werkt dat commando gewoon.
Je kunt de SQL laten echo-en en daarna in de browser selecteren en kopiëren.
Vervolgens kun je dat commando in phpMyAdmin onder de SQL tab plakken en dan moet dat gewoon werken.
Bovendien kun je dan direct zien wat voor resultaat-set je van MySQL terug krijgt.
Dat is gewoon een leerzame test en helpt je PHP problemen te scheiden van SQL problemen.
OK maar zit er een relatie tussen de melding: Undefined Index en het instellen van een if voorwaarde?
Ja, als je een variabele een beginwaarde geeft in een if-blok kan dit in sommige gevallen leiden tot het niet bestaan van een variabele. Dit hangt af van hoe je je variabelen initialiseert.
Eerst moet je snappen hoe if-statements werken. Dit heeft Ivo P hierboven al prima uitgelegd.
Dan zal alleen $something na afloop van dit if-statement bestaan want de conditie "1 == 2" zal nooit waar zijn (of anders gezegd, nooit evalueren tot true).
Het is altijd beter om variabelen die je hoe dan ook gaat gebruiken een zinnige initiële waarde te geven, of voordat je deze gaat gebruiken te controleren of deze een (zinnige) waarde hebben gekregen.
Waarschijnlijk is het handiger als je even een stapje terug doet en je je verdiept in boolse expressies (oftewel: statements die enkel true of false kunnen opleveren).
Dit heeft overigens niet specifiek iets te maken met MySQL.
Scheid, zoals Frank zegt, je problemen, als je deze op één hoop gooit (in één topic) dan is dit alleen maar verwarrender. Zowel voor jou als andere lezers.