zend insert sql不起作用

时间:2013-08-08 08:24:20

标签: zend-framework2 zend-db

试图理解zf2。

我的代码:

$sql = new Sql($dbAdapter);

    $insert = $sql->insert('security');
    $insert->values(array(
            'user' => $userName,
            'ip' => '',
            'result' => 2
    ));
    $dbAdapter->query($insert->getSqlString(), $dbAdapter::QUERY_MODE_EXECUTE);

错误:

  

注意:尝试引用没有特定驱动程序级别的值   支持可能会在生产中引入安全漏洞   环境。在   /opt/projects/my/newSymbio/current/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Platform/Sql92.php   在第80行

任何想法?

2 个答案:

答案 0 :(得分:0)

这是zf2中插入的正确语法:

   $data = array(
        ''user' => $userName,
        'ip' => '',
        'result' => '2'
    );

    $this->tableGateway->insert($data);

并且您需要获取要在哪个表中插入数据的表的对象。

或者您正在使用的另一种方式是:

use Zend\Db\Sql\Sql;

检查您是否正在使用上线。并使用以下代码替换您的最后一行:

$selectString = $sql->getSqlStringForSqlObject($insert);
$results = $this->dbAdapter->query($selectString, $dbAdapter::QUERY_MODE_EXECUTE);

我认为您需要将$dbAdapter更改为$this->dbAdapter并尝试此操作。

答案 1 :(得分:0)

我明白了。

$sql = new Sql($dbAdapter);

$insert = $sql->insert('security');
$insert->values(array(
        'user' => $userName,
        'ip' => '',
        'result' => 2
));
$statement = $sql->prepareStatementForSqlObject($insert);
$results = $statement->execute();