2014-08-30 86 views
0

我试图使用Zend框架更新类:http://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html#zend-db-sql-update更新多个表

创建类似的说法在这里找到:
http://dev.mysql.com/doc/refman/5.0/en/update.html

UPDATE items,month SET items.price=month.price WHERE items.id=month.id; 

我试着将数组传递给 - >表,但它在字符串转换上失败。

// UPDATE `Array` 
$update->table(['table1', 'table2']) 

我已经尝试创建一个转义字符串,但它最终转换为SQL时双转义。

// UPDATE ``table1`,`table2`` 
$update->table("`table1`,`table2`") 

我试图欺骗和使用破灭使用胶水表一起

// UPDATE `table1``,``table2` 
$update->table(implode("`,`", ['table1','table2'])) 

有谁有一个干净的解决这个问题的?

回答

0

经过进一步的研究,我认为不能这样做。我之所以这么说是因为你提出的查询可能太耗费资源。在寻找替代选项后,我遇到Update one MySQL table with values from another。但是,我知道,Update对象上没有加入选项。所以至少在这个阶段,我不相信这是可以做到的。

+0

还在等待答案! – 2014-09-01 15:08:35

+0

我试着手动运行我的查询并将辅助表离开并在WHERE和SET语句中使用它。我从服务器回来了一个错误。 – metric152 2014-09-02 18:43:40

+0

我更新了我的sql语句以使用您发布的答案中的格式。无赖,我发现我暂时不能使用zend类。谢谢您的帮助。 – metric152 2014-09-07 17:50:33

0

您是否正在尝试写下如下所示的sql:“update tableOnetableTwo set ....”!我不认为这是可能的SQL。由于mySql不支持这种syntex,所以zend也是如此。这里是zend表方法 -

public function table($table) 
@param string|TableIdentifier $table 

参数只是字符串或TableIdentifier。所以你必须在zend写两个sql

$update->table('table1'); 
$update->set(array('foo' => 'bar', 'baz' => 'bax')); 
....... 
........ 
$update->table('table2'); 
$update->set(array('foo1' => 'bar', 'baz1' => 'bax')); 

希望它能帮助你。

+0

问题顶部的链接示例显示了mysql文档中的相同sql语句。查询确实有效,但我试图使用Update类。我目前正在使用数据库 - >查询手动编写它。 我尝试了解代码并看到了你正在谈论的功能。它只接受一张桌子。我希望能有办法解决这个问题。 – metric152 2014-09-01 03:57:17