Adobe Flex到数据库插入,更新?

时间:2011-11-26 22:33:41

标签: php flex zend-framework amfphp

我很难通过zend php将flex连接到MySql。我看到了几个使用HTTP服务的例子。我的问题如下

1)我只做一个简单的插入和更新,只有三个表。那么我应该使用所有Zend AMF来实现这一目标吗? 2)那么使用HTTPService呢?

使用zend AMF显示最简单的操作,但是当我尝试插入值时,我迷路了。

我有一个php文件vo.php来存储数据库字段变量,但我无法在主php文件中使用require_once函数

这是vo.php

    class vo {

        public $id;
        public $username;
        public $symptom;
        public $number_of_times_tested;
        public $original_image;
        public $sequence_of_actions;
        public $customized_image;
        public $percieved_image;
    }

这是patientService文件

//require_once 'vo.php';

class patientService { 
  var $username = "root"; 
  var $password = ""; 
  var $server = "localhost"; 
  var $port = "3306"; 
  var $databasename = "patient"; 
  var $tablename = "records"; 

  var $connection; 
  public function __construct() { 
    $this->connection = mysqli_connect( 
                       $this->server,  
                       $this->username,  
                       $this->password, 
                       $this->databasename, 
                       $this->port); 

    $this->throwExceptionOnError($this->connection); 
  } 

  public function getpatient() {
     $stmt = mysqli_prepare($this->connection,
          "SELECT
              records.id,
              records.username,
              records.symptom,
              records.number_of_times_tested,
              records.original_image,
              records.sequence_of_actions,
              records.customized_image,
              records.percieved_image
            FROM records");     

      $this->throwExceptionOnError();

      mysqli_stmt_execute($stmt);
      $this->throwExceptionOnError();

      $rows = array();
      mysqli_stmt_bind_result($stmt, $row->id, $row->username,
                    $row->symptom, $row->number_of_times_tested, $row->original_image,  $row->sequence_of_actions, $row->customized_image, $row->percieved_image
                    );

      while (mysqli_stmt_fetch($stmt)) {
          $rows[] = $row;
          $row = new stdClass();
          mysqli_stmt_bind_result($stmt, $row->id, $row->username,
                    $row->symptom, $row->number_of_times_tested, $row->original_image,  $row->sequence_of_actions, $row->customized_image, $row->percieved_image
                    );

      }

      mysqli_stmt_free_result($stmt);
      mysqli_close($this->connection);

      return $rows;
  }  
/* create a entry for database patient 
*/
    public function createPatient($item) {
    $stmt = mysqli_prepare($this->connection,
        "INSERT INTO patient (
            id,username,symptom,number_of_times_tested,original_image,sequence_of_actions,  
            customized_image,percieved_image) 
        VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
    $this->throwExceptionOnError();


    mysqli_bind_param($stmt, $item->id , $item->username, $item->symptom,$item->number_of_times_tested,$item->original_image,
        $item->sequence_of_actions, $item->customized_image, $item->percieved_image
    );

    $item->id = '5';
    $item->username = 'abhilash';
    $item->symptom = 'retina pigmentosa'; 
    $item->number_of_times_tested = '3';
    $item->original_image = 'img';
    $item->sequence_of_actions = 'l1l2l2lr3';
    $item->customized_image = 'img';
    $item->percieved_image = 'img';

    $this->throwExceptionOnError();



    mysqli_stmt_execute($stmt);
    $this->throwExceptionOnError();


    $autoid = mysqli_stmt_insert_id($stmt);


    mysqli_stmt_free_result($stmt);
    mysqli_close($this->connection);

    return $autoid;
  }

任何人都可以提供详细示例的链接吗?所以我可以更好地参考和理解?

1 个答案:

答案 0 :(得分:0)

HTTPService用于在Flex内部请求任何类型的HTTP资源。如果您愿意,您可以设计自己的基于JSon或XML的Web服务,该服务将在您的表上执行所需的操作。如果您选择将前端技术从Flex切换到HTML / Ajax,则此策略前端独立,例如,您不必对后端进行任何更改。

另一个解决方案是使用Zend_AMF通过AMF从Flex中直接与PHP对象进行交互。

我总是喜欢使用第一种解决方案(没有比我更好理解我所做的更有趣的理由),但是如果你计划做一个仅限前端的话,第二种方法应该可以提高你的工作效率。 / p>