2013-12-15 58 views
-1

我想在PHP中創建一個函數,該函數使用mysql從我的瀏覽器遊戲獲取數據並將其設置爲數據庫。我如何在PHP中使用mysql來設置好函數並設置函數?

include ("connection.php"); 

function getstat($user_id) 
{ 

} 

function setstat($user_id) 
{ 

} 

所以我在我的數據庫中的表存儲的統計信息,因此該stat_id必須等於變量$ USER_ID所以對我來說是很難檸有人可以幫助嗎?

+2

您是否知道SQL的基礎知識,如何執行SELECT,INSERT和UPDATE語句?你用什麼API來與你的數據庫交談(connection.php中發生了什麼),MySQLi,PDO?如果沒有*許多*更多信息,我們無法幫助您。 –

+0

嗨micheal在我的connection.php是一個連接到我的datbase,我知道如何使用SELECT,INSERT和UPDATE,但在這裏是難以使用我,我必須檢查$ user_id是否等於user_id在我的數據庫,所以我可以採取該數據。我希望你現在瞭解它... – user2921357

+0

對不起,更具體的是需要的。當然,我們知道你的連接發生在connection.php中,但是有多種不兼容的方法用於連接PHP中的MySQL數據庫,我們只能猜測你使用的是哪一個。 –

回答

-2

這裏有mysql_功能(但你需要實現它與mysqli,mysql_ *函數被刪除,將被棄用)的例子:

function getstat($user_id) 
{ 
$result = mysql_query("SELECT * FROM user_stats WHERE stat_id=".mysql_real_scape_string($user_id)); 
$row = mysql_fetch_array($result); 
return $row['fieldNeeded']; 
} 

在這第二個功能,你需要通過第二個變種新的數值也是如此。

function setstat($user_id, $newValue) 
{ 
mysql_query("UPDATE user_stats SET fieldUpdated=".mysql_real_scape_string(newValue)." WHERE stat_id=".mysql_real_scape_string($user_id)); 
} 
+0

請編輯你的答案,解釋說mysql_ *函數至少被棄用,然後我會刪除我的downvote。 – Zarathuztra

+0

我在那:) –

+0

ty我會試試這個 – user2921357

1

這真的不是那麼複雜,所以我強烈推薦學習一些SQL。在w3schools上有關於這個主題的一些非常基礎的課程,所以請檢查一下。當然,不要停止與w3schools,但它是一個很好的方式來解決這個問題。

爲了快速參考,這裏是與mysqli的連接設置;

$con = new mysqli('database','username','password','database'); 

這就是說,讓我們看看一些疑問。

首先,我假設你的連接代碼已經爲我們設置了一個mysqli連接,我也假定你有api文檔,方便使用mysqli,並且autocommit開啓,這樣我們就不會「T處理交易(某事物的初學者要遠離真正的距離)

讓我們插入一個統計

//第一,看該用戶是否存在,裏面getstat($ ID)

if(getstat($id) !== false){//a user was found via getstat($id), note the type check 
    $stmt = $con->prepare('UPDATE `stat_table` SET=stat_user WHERE id=:id'); 
} 
else{ 
    $stmt = $conf->prepare('INSERT INTO `stat_table` VALUES('','users name','some other column value'); 
} 
$stmt->bind_param('n',':id'); 
$stmt->execute(); 
$stmt->close(); 

//現在,我們來實現getstat,它將成爲rathe [R簡單

$stmt = $con->prepare('SELECT * FROM `stat_table` WHERE id=:id'); 
$stmt->bind_param('n',':id'); 
$stmt->execute(); 


if($stmt->num_rows == 1){//user exists and here is the data!! 
    $stmt->bind_result($id,$users_name,$some_other_value);//one variable for each column returned 
    $result_row = $stmt->fetch(); 
    printf('id: %n and user_name: %s and some_other_value: %s\n',$id,$users_name,$some_other_value); 
    $stmt->close();//don't leave me hangin guys 
    return $result_row;//because the user exists and we output their info! Yay!! We're also going to return the row as an object so that whoever called this function can use the data. Since this is non null a simple if($result_row) will return true. 
} else { //nope, user doesn't exist (0 rows returned), so we need to inform the system 
    return false;//this is why setstat has a type check in it, since we can return two types of data, one object, one boolean. 
} 

注:此代碼假定無錯誤的執行,以及是否有和mysqli API文檔方便,可以閱讀它們。它也可能包含語法和用法錯誤,因爲我寫得太快了:)

說明:我們在這裏做的事情概述了SQL中的一些非常常見的操作。首先,我們需要使用SELECT語句根據ID獲取一行數據。出於安全原因,我們將使用準備好的語句對象來替換ID中可能有惡意的代碼片段,並使用一個非常乾淨的數字來進行查找。

然後,基於此,我們要麼運行UPDATE語句來將統計信息設置爲新值,要麼執行INSERT語句來首先實際添加該行和統計信息。這一切都使用準備好的語句,如果您是SQL和數據庫系統的新手,可能會發現它有點高級,但是出於安全原因,這些語句非常重要。檢查apis並在維基百科上閱讀它們。

那麼,爲什麼這本書的答案?坦率地說,你似乎並沒有牢牢掌握SQL的「語言」(我把它放在引號中,因爲它在不同的DBMS中的使用略有不同),我們在這裏學習。所以,而不是隻爲你寫代碼,我確實想給你一些解釋,即使這已經得到解答:)

我希望這會有助於你現在和未來的努力!

相關問題