php - ZF2 使用 INSERT INTO .... SELECT 从表到同一个表进行批量插入

标签 php zend-framework2 bulkinsert insert-into

我正在尝试将表中的一些记录批量复制到同一个表中,并更改一个字段。但我无法在 ZF2 中找到正确的方法。

我现有的表如下所示: CoID -- CatCode -- 类别名称

PP -- 自动 -- 自动

PP -- 山 -- 地铁

PP -- 出租车 -- 出租车

我想运行此 SQL 查询:

插入expcatmaster 从 expcatmaster 选择“RY”、CatCode、CategoryName,其中 CoID =“PP”

我无法找到将常量“RY”放入代码中的方法(使用 ZF2)。 我的 CopyCategoryTable.php 中的代码如下:

public function insCategory($FromCoID, $ToCoID) {
    $SelCol = array(
        'CoID',
        'CatCode',
        'CategoryName',
    );

    $adapter = $this->tableGateway->getAdapter();
    $sql = new Sql($adapter);
    $SelQry =$sql->select();
    $SelQry->columns($SelCol);
    $SelQry->from('ExpcatMaster');
    $SelQry->where(array('CoID' => $FromCoID));
    echo $SelQry->getSqlString();

    $InsQry = $sql->insert();
    $InsQry->into('ExpcatMaster');
    $InsQry->select($SelQry);
    $InsData = $sql->prepareStatementForSqlObject($InsQry);
    echo $InsQry->getSqlString();

    $this->tableGateway = $InsData->execute();

}

如何用我传递给函数的 $ToCoID 替换选择表中 CoID 的实际值?尝试过谷歌并在这个论坛中搜索,但似乎无法解决。

最佳答案

ZF (Zend\Db) 中没有批量插入的方法, 所以你必须为此编写一个方法。

Zend\Db\Sql\Sql multiple batch inserts

MySQL 支持批量插入,但并非所有数据库都支持... 检查链接上的讨论。

您可以针对这种情况执行原始 SQL 查询:

$parameters = ['name 1', 'desc 1', 'name 2', 'desc 2'];
$sql        = 'INSERT INTO table (name, description) VALUES (?, ?), (?, ?);';
$resultSet  = $this->adapter->query($sql, $parameters);

return $resultSet->getAffectedRows();

关于php - ZF2 使用 INSERT INTO .... SELECT 从表到同一个表进行批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30586119/

相关文章:

PHP curl 连接超时错误

SQL Server 2012 从 CSV 批量插入到临时表

sql - 批量插入期间会出现其他字符

mysql - Doctrine2 - 使用分组方法添加每个月的总计

php - 授予 bjyauthorize 从 CLI 运行 ZF2 的 mvc 应用程序的权限

c# - 如何将数据行流式传输到sql server?

php - namespace 错误。卡在 'MyApp\Chat'

php - 根据计算值查找所有重复项的列表

php - Group By/Having 子句上的 MySQL 多个条件

mysql - 从 Zend Framework 2 中生成的 MYSQL 中删除引号