2011-12-24 4 views
2

J'ai donc travaillé sur un jeu de simulation national. Ça va être en ligne et j'ai beaucoup d'expérience avec CSS et HTML, mais pas avec PHP. J'ai également beaucoup d'expérience avec Java et C++. J'ai la configuration de la base de données et je travaille avec un système de connexion et d'enregistrement fonctionnel, avec un index de membre fonctionnel affichant les statistiques actuelles des nations. Cependant, j'ai été complètement incapable de comprendre comment faire un script qui changerait les informations de l'utilisateur telles que le nom de la nation et les fonds disponibles. Ceci est ma faible tentative de l'un: (Il est tentant d'ajouter 10 bâtiments au total SESS_ sont variables dans une session.)PHP Update/Row edit avec MySQL

<?php 
//Start session 
session_start(); 

//Include database connection details 
require_once('config.php'); 

//Connect to mysql server 
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
if(!$link) { 
    die('Failed to connect to server: ' . mysql_error()); 
} 

//Select database 
$db = mysql_select_db(DB_DATABASE); 

function clean($str) { 
    $str = @trim($str); 
    if(get_magic_quotes_gpc()) { 
     $str = stripslashes($str); 
    } 
    return mysql_real_escape_string($str); 
} 


$result = mysql_query("UPDATE members SET buildings ='10' WHERE login='SESS_NATION'") 
or die(mysql_error()); 


$result = mysql_query("SELECT * FROM members WHERE login='SESS_NATION'") 
or die(mysql_error()); 

// get the first (and hopefully only) entry from the result 
$row = mysql_fetch_array($result); 
echo $row['login']." - ".$row['Buildings']. "<br />"; 
?> 
+0

est SESS_NATION un nom ou une constante ..? –

+0

SESS_NATION est déclaré comme une constante dans un autre fichier, login-exec.php. – madmax88

Répondre

1

Si vos variables sont en session, essayez:

 
//or if a constant then, 
$result = mysql_query("UPDATE members SET buildings ='10' WHERE login='".SESS_NATION."'") 
or die(mysql_error()); 

//first one 
$result = mysql_query("UPDATE members SET buildings ='10' WHERE login='".$_SESSION['SESS_NATION']."'") 
or die(mysql_error()); 

Espoir ça aide

+1

Juste pour ajouter à cela, vous serez vulnérable aux attaques par injection SQL sans désinfecter la variable de session. Utilisez mysql_real_escape_string(). Aussi, je suggère fortement d'utiliser une bibliothèque d'enregistrements active comme http://www.phpactiverecord.org pour simplifier votre travail. Tu te remercieras plus tard. – Ben

+0

J'ai essayé les deux et j'ai eu une erreur disant "Erreur d'analyse: erreur de syntaxe, T_VARIABLE inattendu dans /www/clanteam.com/n/a/t/nationtrial/htdocs/PHP-Login/inf.php à la ligne 29" – madmax88

+0

modifier ci-dessus, si SESS_NATION est une constante et accessible dans le fichier que vous utilisez le code UPDATE, alors cela devrait fonctionner ... J'espère que cela aide –