Ik heb de afgelopen tijd heel veel vragen gesteld maar ik kom tot de ontdekking het niet goed te begrijpen. Daarom back to basic. Als mensen mij willen helpen zou ik het leuk vinden anders houd het op.
Ik begin wel met een database.
Ik heb een connectie gemaakt. Daar heb ik mijn eerste vraag dan ook over:
Ik zal de code later hieronder plaatsen. De vraag is waarom krijg ik geen echo als de connectie mislukt en wel als deze lukt?
je weet zelf al met PHP hoe je een formulier moet afhandelen? De verwerking naar een MySQL database is precies hetzelfde, alleen moet je als extraatje de boel escapen met mysqli_real_escape_string(...) [sup]1[/sup] of $mysqli->real_escape_string(....)[sup]2[/sup].
Als je gaat werken met MySQLi, bedenk dan wel of je procedureel (1) of Object Oriënted (2) gaat gebruiken. Ik raad het laatste aan. Vooral omdat je met classes meer kan doen. En je hoeft naar mijn mening dan ook niet direct te weten hoe ze werken. Maar het sluit wel mooi aan op de toekomst als je later meer met classes gaat doen. Dus richt je bij voorkeur op de toekomst.
Beiden mengen kan ook, maar dat raad ik af, al is het vanwege de afwijkende werking in enkele gevallen.
Beiden mengen kan ook, maar dat raad ik af, al is het vanwege de afwijkende werking in enkele gevallen.
De werking (het gedrag) van de procedurele en OOP-variant is bij mijn weten altijd hetzelfde, maar de aanroep (parameters en/of de volgorde hiervan) kan nogal eens verschillen. En soms zijn bepaalde functies of methoden aliassen van iets anders. Gebruik bij voorkeur geen aliassen, want de kans is groot dat deze in de toekomst opgeschoond worden.
Neemt niet weg dat het inderdaad niet praktisch is beide varianten door elkaar te gebruiken en ik ga mee in de voorkeur voor de OOP-wijze, met name omdat MySQLi zelf enkel met objecten werkt.
Het bovenstaande lijkt mij een iets concretere onderbouwing voor de keuze voor een bepaalde variant.
De controle die @Frank hierboven doet levert mogelijk niet het gewenste resultaat op, omdat mysqli_connect() altijd een object retourneert, zelfs als de connectie mislukt. Dit object evalueert dus nooit tot false en daarom is !$conn dus ook geen goede check voor het slagen of mislukken van de verbinding. Dit is de afgelopen tijd al minstens 2 keer aangehaald trouwens :p.
Dan zien we hier dat er twee parameters verplicht zijn: de verwijzing naar de connectie, en de tweede is de query zelf. Je hebt nu enkel alleen de query.
Tevens horen je variabelen buiten quotes, en raad ik een vorm van foutafhandeling aan.