2011-03-07 57 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