2011-12-24 8 views
2

私は国家シミュレータゲームに取り組んできました。そのオンラインになるつもりと私は、CSSやHTMLで多くの経験があるが、PHPではありません。私はJavaとC++に多くの経験があります。私は、データベースのセットアップと機能しているログインと登録システムと、国家の現在の統計情報を表示している機能的なメンバーインデックスと一緒に働いています。しかし、私は、国名や現在の資金などのユーザー情報を変更するスクリプトを作成する方法を完全に理解することはできませんでした。これは、1つの私の微弱な試みです。(合計10件の建物を追加しようとしていますSESS_は、セッション内の変数です。)あなたの変数がセッションである場合は、してみてくださいMySQLでのPHPの更新/行の編集

<?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

はSESS_NATION名前または定数..ですか? –

+0

SESS_NATIONは別のファイルlogin-exec.phpで定数として宣言されています。 – madmax88

答えて

1

 
//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()); 

希望をそれは助ける

+1

これに追加するだけで、セッション変数をサニタイズせずにSQLインジェクション攻撃の脆弱性があります。 mysql_real_escape_string()を使用します。 また、作業を簡略化するためにhttp://www.phpactiverecord.orgのようなアクティブなレコードライブラリを使用することを強くお勧めします。あなたは後で自分自身に感謝するでしょう。 – Ben

+0

私は両方を試してみましたが、 "Parse error:構文エラー、予期しないT_VARIABLE /www/clanteam.com/n/a/t/nationtrial/htdocs/PHP-Login/inf.php 29行目" – madmax88

+0

チェックSESS_NATIONが定数であり、あなたが更新コードを使用しているファイルでアクセス可能な場合は上で編集してください。うまくいきます。 –

関連する問題