从sql数据库中提取数据的过程

时间:2010-08-07 22:43:24

标签: php sql oop

我想创建一个程序,它从sql数据库中提取对象,并在将数据返回给用户之前根据一组函数处理对象。

  

它会像这样工作:

     
      
  1. 用户以javascript格式指定日期范围。
  2.   
  3. 将日期范围发送到将其转换为的服务器上的php文件   一个SQL查询。
  4.   
  5. sql查询会提取数据库中与日期匹配的所有数据   范围,并将每个匹配项及其相关信息存储为php   临时php文件中的类(参见下面的示例)。
  6.   
  7. 主php程序然后根据一组函数处理临时php文件中的每个类,并将信息返回给用户。
  8.   

示例临时php文件:

class ice_cream
{
       $temperature = 0;
       $texture = 'soft';
}

class hard_candy
{
    $temperature = 20;
    texture = 'hard';
}

处理类的函数示例:

function will_it_break_dentures($class_name)
{
    //$class_name is passed to the function based on the classes available in temp file
    $food_type_class = new $class_name();
    $damage_potential_temperature = $food_type_class->temperature;
    $damage_potential_temperature = $food_type_class->texture;

    if($damage_potential_temperature >= 15) && ($damage_potential_texture === 'hard')
    {
        print("Don't eat it");
    }

}

是否有更高效/安全的方法从数据库中提取数据并根据一组函数对其进行处理?这是从数据库中提取数据进行处理的标准方法吗?第3项似乎很可疑,但这是我能想到的最好的。任何有关最佳实践的相关信息资源都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

您的类定义应该定义对象的属性,而不是值。它应该静态定义,而不是在运行时动态定义。在运行时,您可以创建此类的实例并填充每个实例的数据。

尝试这样的事情:

class Food {
   var $name;
   var $temp;
   var $texture;

   // Constructor
   public function food($name, $temp, $texture) {
      $this->name = $name;
      $this->temp = $temp;
      $this->texture = $texture;
   }

   public function breaksDentures() {
      if($this->temp >= 15) && ($this->texture === 'hard')
         return true;
      else
         return false;
   }
}

并像这样使用它:

function processFoods($daterange) {
   $query = build_query_from_daterange($daterange);
   $result = mysql_query($query);

   while($row = mysql_fetch_assoc($result)) {
      $food = new Food($row['name'], $row['temp'], $row['texture']);
      // Now $food is an instance of the Food class populate with the values
      // from the db, e.g., 'ice cream', 0, 'hard'.

      if $food->breaksDentures() {
         print("Don't eat it");
      }
   }
}

P.S。您可能希望了解面向对象的概念。你的问题很好,但表明对OO基础知识有些困惑。