2013-08-08 2 views
1

пытаясь понять zf2.zend insert sql не работает

мой код:

$sql = new Sql($dbAdapter); 

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

ошибка:

Notice: Attempting to quote a value without specific driver level support can introduce security vulnerabilities in a production environment. in /opt/projects/my/newSymbio/current/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Platform/Sql92.php on line 80

какие-либо идеи?

ответ

0

Я понял это.

$sql = new Sql($dbAdapter); 

$insert = $sql->insert('security'); 
$insert->values(array(
     'user' => $userName, 
     'ip' => '', 
     'result' => 2 
)); 
$statement = $sql->prepareStatementForSqlObject($insert); 
$results = $statement->execute(); 
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 попробовать это.

+0

Что такое & зачем для стола Gateway? – Subdigger

+0

@Subdigger tableGateway - это объект таблицы, в котором вы создаете время создания таблицы. –

+0

@Subdigger Я обновил ответ, чтобы проверить это. –

Смежные вопросы