2011-12-24 138 views
2

所以我一直在製作一個國家模擬器遊戲。它會在線,我有很多CSS和HTML的經驗,但不是與PHP。我也有很多使用Java和C++的經驗。我有數據庫設置和一個有效的登錄和註冊系統,以及一個正常運行的成員索引,顯示各國目前的統計數據。但是,我完全無法弄清楚如何製作一個腳本來改變用戶信息,例如國家名稱和當前可用資金。這是我在一個軟弱的嘗試:(它試圖將10幢增加總SESS_是在一個會話變量。)PHP更新/ 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

是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

我試了兩次,並且出現錯誤,提示「解析錯誤:語法錯誤,第29行中的/www/clanteam.com/n/a/t/nationtrial/htdocs/PHP-Login/inf.php中出現意外的T_VARIABLE」 – madmax88

+0

檢查上面編輯,如果SESS_NATION是一個常量,並在您使用UPDATE代碼的文件中可訪問,那麼它應該工作...希望它可以幫助 –