2011-12-19 8 views
0

このコードの最後の行はオブジェクトを返すようですが、データベースクエリは実行されません。実際にデータベースの更新を実行するにはどうすればよいですか?ここでZend DB query() - データベース更新を実行するにはどうすればよいですか?

$sql = "UPDATE vi_admin_email SET processed_send_list = '?', status = '?' WHERE id = '?'"; 
$bind = array($addresses,$status,$id); 
$res = $this->getAdapter()->query($sql,$bind); 

が$ RESにオブジェクトのVaRのダンプです:

object(Zend_Db_Statement_Pdo)[102] 
    protected '_fetchMode' => int 2 
    protected '_stmt' => 
    object(PDOStatement)[100] 
     public 'queryString' => string 'UPDATE vi_admin_email SET processed_send_list = '?', status = '?' WHERE id = '?'' (length=80) 
    protected '_adapter' => 
    object(Zend_Db_Adapter_Pdo_Mysql)[43] 
     protected '_pdoType' => string 'mysql' (length=5) 
     protected '_numericDataTypes' => 
     array 
      0 => int 0 
      1 => int 1 
      2 => int 2 
      'INT' => int 0 
      'INTEGER' => int 0 
      'MEDIUMINT' => int 0 
      'SMALLINT' => int 0 
      'TINYINT' => int 0 
      'BIGINT' => int 1 
      'SERIAL' => int 1 
      'DEC' => int 2 
      'DECIMAL' => int 2 
      'DOUBLE' => int 2 
      'DOUBLE PRECISION' => int 2 
      'FIXED' => int 2 
      'FLOAT' => int 2 
     protected '_defaultStmtClass' => string 'Zend_Db_Statement_Pdo' (length=21) 
     protected '_config' => 
     array 
      'host' => string 'localhost' (length=9) 
      'username' => string 'root' (length=4) 
      'password' => string '' (length=0) 
      'dbname' => string 'vi' (length=2) 
      'charset' => null 
      'persistent' => boolean false 
      'options' => 
      array 
       ... 
      'driver_options' => 
      array 
       ... 
     protected '_fetchMode' => int 2 
     protected '_profiler' => 
     object(Zend_Db_Profiler)[44] 
      protected '_queryProfiles' => 
      array 
       ... 
      protected '_enabled' => boolean false 
      protected '_filterElapsedSecs' => null 
      protected '_filterTypes' => null 
     protected '_defaultProfilerClass' => string 'Zend_Db_Profiler' (length=16) 
     protected '_connection' => 
     object(PDO)[85] 
     protected '_caseFolding' => int 0 
     protected '_autoQuoteIdentifiers' => boolean true 
     protected '_allowSerialization' => boolean true 
     protected '_autoReconnectOnUnserialize' => boolean false 
    protected '_attribute' => 
    array 
     empty 
    protected '_bindColumn' => 
    array 
     empty 
    protected '_bindParam' => 
    array 
     empty 
    protected '_sqlSplit' => 
    array 
     0 => string 'UPDATE vi_admin_email SET processed_send_list = , status = WHERE id = ' (length=71) 
    protected '_sqlParam' => 
array 
    0 => string 'UPDATE vi_admin_email SET processed_send_list = , status = WHERE id = ' (length=71) 

は、保護された '_queryId' => nullを

+0

$これはなんですか? – emaillenin

答えて

2

あなたは次のように行うのZend Frameworkのエントリを更新するには、このコードの一行をお試しください最初のパラメータとして使用します。クエリが実行されると、提供されたデータはエスケープされます。また、whereステートメントを文字列として含める必要があります(id = 1など)。上記の例では、quoteIntoはどこに手動で書き込むことができるのでオプションですが、手動で行うと値がエスケープされません。

0

私は、 "クエリ" を読んで思ったけど、あなたはアップデート」について尋ねました"

ステートメントは、

$ res-> execute()です。

前に書いたことを忘れてしまった。 associative arrayにspecfiedされ更新される

Zend_Db_Table
$data = array(
    'processed_send_list' => $addresses, 
    'status' => $status 
); 

$dbAdapter = $this->getAdapter(); 

$where = $dbApdapter->quoteInto('id = ?', $id); 

$this->update($data, $where); 

、データ:

+0

うーん..それは動作しません。私はSQLをチェックすると、それはパラメタをバインドせずに通過している、すなわち、3つあった?実際のパラメータの代わりにプレースホルダを使用します。 – Owen

0

$res = $this->getAdapter()->query("UPDATE vi_admin_email SET processed_send_list = '$addresses', status = '$status' WHERE id = '$id'"); 
+0

はい私はすでにそれを試して、それは動作します...しかし、SQL文にparamsをバインドしたいです。 – Owen

関連する問題