Door
Stan Peters
op 29-01-2014 14:38
gewijzigd op 29-01-2014 14:39
1.277 views
Hallo,
Ik ben een spel aan het maken en ik wil graag geld kunnen opslaan in de datebase wanneer je uitlogt, en wanneer je inlogt dat je het dan ophaalt.
Dit lukt echter nog niet.
Dit zijn de codes:
De verbinding met de database is al gelukt. Dus daar ligt het niet aan.
Het ophalen:
$query = "SELECT Cashgeld, Bankgeld FROM Accounts WHERE Gebruikersnaam = $gebruikersnaam";
$resultaat = mysql_query($query);
while ($row = mysql_fetch_array($resultaat))
{
$_SESSION['cashgeld'] = $row["Cashgeld"];
$_SESSION['bankgeld'] = $row["Bankgeld"];
}
Het opslaan:
$_SESSION['cashgeld'] = $cashgeld;
$_SESSION['gebruikersnaam'] = $gebruikersnaam;
$_SESSION['bankgeld'] = $bankgeld;
$sql = "UPDATE Accounts SET Cashgeld = \"$cashgeld\" WHERE Gebruikersnaam = \"$gebruikersnaam\"";
$resultaat = mysql_query($sql) or die (mysql_error());
$verbreken = mysql_close($sql);
$sql2 = "UPDATE Accounts SET Bankgeld = \"$bankgeld\" WHERE Gebruikersnaam = \"$gebruikersnaam\"";
$resultaat = mysql_query($sql2) or die (mysql_error());
$verbreken = mysql_close($sql2);
<?php
$sql = "UPDATE Accounts SET Cashgeld = ".$_SESSION['cashgeld']." WHERE Gebruikersnaam = '".$_SESSION['gebruikersnaam']."'";
// etc...
?>
Gewoon in het vervolg netjes single-quote gebruiken voor (voor)waardes uit WHERE en SET omdat het een string is, en natuurlijk de variabelen in PHP buiten quotes laten. Ook het kopieëren van variabelen wat op lijn 1 t/m 3 gebeurt is onnodig, en kan alleen maar verwarrender werken en veiligheidsrisico's meebrengen tijdens het programmeren.
Verder raad ik ook aan om naar PDO of MySQLi te kijken, omdat de functiebibiliotheek van Mysql_*() ten einde zal komen in nieuwe versies van PHP. Ikzelf geef het geen twee jaar meer voordat de hostings het uit gaan schakelen.
Daarnaast gebruik je geen die() maar een goede foutafhandeling.
Je script is ook zo lek als een mandje. Inloggen als 'drop table Accounts resulteert in het wissen van je database. Gebruik hiervoor mysql(i)_real_escape_string() voor.
Dankjewel voor jullie antwoorden!
Ik heb precies gedaan wat Aaf zei, en het uitloggen werkt nu.
Alleen werkt het inloggen en het ophalen van de sessions nog niet.
$query = "SELECT Cashgeld, Bankgeld FROM Accounts WHERE Gebruikersnaam = $gebruikersnaam";
$resultaat = mysql_query($query);
while ($row = mysql_fetch_array($resultaat))
{
$_SESSION['cashgeld'] = $row["Cashgeld"];
$_SESSION['bankgeld'] = $row["Bankgeld"];
}
Weet iemand hier iets op?
Naar een batch zal ik later kijken! Maar bedankt voor de tip!