Zend framework Zend DB query()-如何执行数据库更新?
这段代码的最后一行似乎返回了一个对象,但没有执行数据库查询。我要做什么更改才能让它实际执行数据库更新Zend framework Zend DB query()-如何执行数据库更新?,zend-framework,Zend Framework,这段代码的最后一行似乎返回了一个对象,但没有执行数据库查询。我要做什么更改才能让它实际执行数据库更新 $sql = "UPDATE vi_admin_email SET processed_send_list = '?', status = '?' WHERE id = '?'"; $bind = array($addresses,$status,$id); $res = $this->getAdapter()->query($sql,$bind); 以下是对象的var转储,单位为
$sql = "UPDATE vi_admin_email SET processed_send_list = '?', status = '?' WHERE id = '?'";
$bind = array($addresses,$status,$id);
$res = $this->getAdapter()->query($sql,$bind);
以下是对象的var转储,单位为$res:
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)
受保护的'\u queryId'=>null我以为我读过“查询”,但你问过“更新”
因此,声明将是:
$res->execute()
忘记我以前写的东西。试试这一行代码
$res = $this->getAdapter()->query("UPDATE vi_admin_email SET processed_send_list = '$addresses', status = '$status' WHERE id = '$id'");
要更新Zend Framework中的条目,请执行以下操作:
$data = array(
'processed_send_list' => $addresses,
'status' => $status
);
$dbAdapter = $this->getAdapter();
$where = $dbApdapter->quoteInto('id = ?', $id);
$this->update($data, $where);
使用
Zend_Db_Table
,要更新的数据在关联数组中指定为第一个参数。执行查询时,将转义提供的数据。您还必须将where
语句作为字符串包含,例如id=1
作为第二个参数。在上面的示例中,quoteInto
是可选的,因为您可以手动写入where,但如果手动写入,则不会转义该值。Hmmm。。那不行。当我检查sql时,它没有绑定参数,也就是说,有三个?占位符,而不是实际的参数。是的,我已经尝试过了,它的工作。。。但是我想将参数绑定到sql语句。