Hey folks. It's me again.
Nu ik eindelijk de resultaten in mijn db kan raadplegen en bekijken, zou ik er graag toevoegen aan mijn db via een form. Maar het lukt niet met de code die ik heb.
<?php
include("misc.php");
$connection = mysql_connect($host,$user,$password) or die ("Kon geen verbinding maken met de server");
$db = mysql_select_db($database,$connection) or die ("Kon de database niet selecteren");
mysql_query("INSERT INTO Events ('ploegID','wedstrijd','datum','tijd','plaats','info')
VALUES ('$_POST[ploegID]','$_POST[wedstrijd]','$_POST[datum]','$_POST[tijd]','$_POST[plaats]','$_POST[info]')");
echo "Er is een wdstrijd toegevoegd";
mysql_close($connection);
?>
Iemand een idee?
Ik heb deze pagina insert.php genoemd, en op m'n html pagina heb ik deze in het formulier verwerkt.
Foutafhandeling
Foutafhandeling wil zeggen dat je de fouten - als een query mislukt - afvangt en een nette melding hiervan maakt. Je kunt fouten met MySQL laten zien met mysql_error(). Je echo't fouten.
Een foutafhandeling maak je door te kijken of een query gelukt is. Als een query mislukt is, zal deze false teruggeven. Hierop kun je dus controleren bij het controleren van je query.
MySQL-Injection
Variabelen die gevuld kunnen worden door bezoekers zélf moet je nóóit vertrouwen. Bezoekers kunnen namelijk van alles invullen, niet alleen wat jíj wilt dat ingevuld moet worden. Daarom zul je er in ieder geval [php]mysql_real_escape_string[/php]() overheen moeten laten gaan. Je kunt ook, als je wat gerichtere input wilt, van te voren de inhoud van die $_POST-variabelen checken.
Variabelen buiten quotes
Een variabele ($var) hoort búíten quotes. Dat wil zeggen:
<?php
// fout:
echo "hoi $var";
// goed:
echo "hoi ".$var;
?>
In een query moet dit óók. Tevens horen keys van arrays tussen enkele quotes.
<?php
echo $_POST['keyname'];
?>
Query opstellen
Een query opstellen gaat het makkelijkst door éérst een variabele te vullen met je query. Dáárna voer je deze query uit middels [php]mysql_query[/php](). Zo kun je ook de query echo'en, wanneer er een fout voordoet.
Tevens horen keys van arrays tussen enkele quotes. Behalfe als je een array in een string literal hebt staan ;)
Maar inderdaad, direct $_POST data in je query gebruiken is een grote NOT DONE.
als ik queries schrijf doe ik dat voor de duidelijkheid zelf vaak met sprintf http://php.net/sprintf
Hey hey gasten. Het lukt me helemaal niet. Ik probeer via een formulier (alleen voor admin) wedstrijden toe te voegen aan mijn db.
Maar met alles wat ik nu al geprobeerd heb lukt het absoluut niet.
Heeft iemand een idee?
Bij een vorige vraag van me, kreeg ik de raad om mijn gegevens (user, db, password,..) in een apparte php file gezet die ik misc.php heb genoemd.
Kan iemand me opweg helpen?