2011-03-07 79 views
0

我剛剛提交了我的工作,課程負責人要求我使用PHP函數來查詢我的數據庫。我怎樣才能做到這一點?是否可以在我的查詢之前添加「函數getRooms」,並返回所需的結果。我需要詳細介紹MySQL的功能。將PHP函數與數據庫集成

例如: 我如何將一個函數添加到這個代碼:

<?php 
    // By Kelvin 
    include ("player.php"); 
    $result = mysql_query("SELECT * FROM phplogin WHERE username = '$username'"); 
    $row = mysql_fetch_assoc($result); 
    $medipack = $row['medipack']; 
    if ($_POST['object'] == "Use Medipack") { 
     if ($medipack != 0) { 
      mysql_query("UPDATE phplogin SET score = score + 50, health = health + 50, medipack = medipack - 1 
      WHERE username = '$username'"); 
      echo ("<P>Medipack Used!</P>"); 
      $RoomNumber =5; 
     } 
     else { 
      echo ("<P>You're all out of medipacks!</P>"); 
     } 
    } 
?> 
+0

首先,你應該問他爲什麼問你這個問題。 – 2011-03-07 15:27:30

+0

你能編輯你的問題並添加一些你正在使用的代碼嗎?這將有助於您的問題 – 2011-03-07 15:27:51

+0

@Phill Pafford ..我已經添加了一個示例。我如何爲此添加功能? – Kelvin 2011-03-07 16:16:01

回答

1

如果他在尋找一個代碼的其餘部分和訪問數據庫的代碼之間的抽象級別,將數據庫邏輯封裝在函數中應該位於正確的路徑上:

function getRooms($link){ 
    $sql = "SELECT * FROM rooms"; 
    $data = array(); 
    if($set = mysql_query($sql)){ 
     while($row = mysql_fetch_assoc($set)){ 
      $data[] = $row; 
     } 
    } 
    return empty($data) 
     ? null 
     : $data; 
} 

$db_connection = mysql_connect('host', 'user', 'pass'); 
mysql_select_db('name', $db_connection); 
$rooms = getRooms($db_connection); 

將這些函數包裝到一個類中,並通過方法訪問它們是另一個步驟,因爲實例化對象可以管理自己的連接等,但這可能比必要的更進一步。其他功能(基於我能猜到的)可能是:

function getRoomById($link, $id){ } 
function getRoomsByName($link, Array $names){ } 
+0

..請檢查更新的問題,並留下一個示例。 – Kelvin 2011-03-07 16:21:56

+0

** @ Kelvin; **對不起,不要做功課;教魚和所有這一切。你需要做的是將你的數據庫邏輯提取到可管理的函數中。在這種情況下,也許'checkItem()'檢查拾取的物品的類型,'changeHp()'更新播放器HP。我提供的例子應該是一個很好的起點。 – Dan 2011-03-07 17:14:57

0

我可以想象你的課程領導者指的是PHP的原生MySQL的功能 - http://php.net/manual/en/book.mysql.php

+0

不,我認爲他正在談論用戶定義的功能。 '是否可以添加「函數getRooms」'。 – 2011-03-07 15:34:45

+0

@Michiel Pater--看到了新增的代碼示例,我同意 - 請忽略我的回答。 – BrynJ 2011-03-07 16:42:05

0

你可以將你的查詢包裝在PHP函數中。例如,像這樣:

function &getRooms(){ 
    $query="SELECT id,name FROM rooms"; 
    $result=mysql_query($query); 

    $ar_out=array(); 
    while ($row = mysql_fetch_assoc($result)) { 
     $ar_out[]=$row; 
    } 
    return $ar_out; 
} 

此說,你真的應該找一個補習或一本書,關於如何使用MySQLPHP在一起。有關代碼組織和性能的知識很多。

+1

請檢查更新的問題,並留下一個示例。 – Kelvin 2011-03-07 16:21:28