2011-11-26 36 views
1

我很难通过zend php连接到MySql。我看到一些使用HTTP服务的例子。我的问题如下Adob​​e Flex到数据库插入,更新?

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; 
    } 

任何人都可以给一个好的详细例子的链接?所以我可以更好地参考和理解?

+0

我很难看出这一点。 PHP是问题吗?需要帮助来控制服务器端数据库代码吗? 或者你想在Flex方面获得帮助吗? 顺便说一句:为什么你不能使用require_once?我几乎看不到原因 - 而不是脚本文件中的副作用 - 这应该是精简的。样式! – SteAp

+0

是的PHP是问题,当我包括require_once(''),zend是抛出一个错误。 我想用前端的flex控制数据库操作。 –

回答

0

HTTPService在这里被用来请求任何类型的Flex里面的HTTP资源。如果你想要的话,你可以设计你自己的基于JSon或XML的web服务,它将在你的桌面上执行所需的操作。如果您选择将前端技术从Flex切换到HTML/Ajax,则此策略前端独立,例如,您不必在后端上进行任何更改。

另一种解决方案是使用Zend_AMF通过AMF实现从Flex到PHP对象的直接交互。

我一直比较喜欢使用第一种解决方案(没有比我更好理解我所做的更有趣的理由),但是如果您计划只在前端使用flex,则第二种解决方案应该可以提高生产力。