/**
  * @test
  *
  * @return void
  */
 public function insertQueryCreateValidQueryFromMultipleValues()
 {
     $this->subject = $this->getAccessibleMock(DatabaseConnection::class, ['fullQuoteStr'], [], '', false);
     $this->subject->expects($this->any())->method('fullQuoteStr')->will($this->returnCallback(function ($data) {
         return '\'' . (string) $data . '\'';
     }));
     $fieldValues = [$this->testField => 'Foo', $this->anotherTestField => 'Bar'];
     $queryExpected = "INSERT INTO {$this->testTable} ({$this->testField},{$this->anotherTestField}) " . "VALUES ('Foo','Bar')";
     $queryGenerated = $this->subject->INSERTquery($this->testTable, $fieldValues);
     $this->assertSame($queryExpected, $queryGenerated);
 }
Esempio n. 2
0
 /**
  * Db add object
  *
  * @param Tx_Commerce_Dao_BasicDaoObject $object Object
  *
  * @return void
  */
 protected function dbInsert(Tx_Commerce_Dao_BasicDaoObject &$object)
 {
     $dbTable = $this->dbTable;
     $dbModel = $this->parser->parseObjectToModel($object);
     // set pid
     $this->parser->setPid($dbModel, $this->createPid);
     // execute query
     $this->database->exec_INSERTquery($dbTable, $dbModel);
     // any errors
     $error = $this->database->sql_error();
     if (!empty($error)) {
         $this->addError(array($error, $this->database->INSERTquery($dbTable, $dbModel), '$dbModel' => $dbModel));
     }
     // set object id
     $object->setId($this->database->sql_insert_id());
 }
Esempio n. 3
0
 /**
  * Returns the last built SQL INSERT query with tabs removed.
  *
  * This function tries to retrieve the last built SQL INSERT query from the database object property $this->debug_lastBuiltQuery (works only since T3 3.8.0 with $GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true). If this does not succeed, a fallback method is used (for former versions of class.\TYPO3\CMS\Core\Database\DatabaseConnection.php [TYPO3 3.6.0-3.8.0beta1] or $GLOBALS['TYPO3_DB']->store_lastBuiltQuery _not_ set to true) to retrieve the query string from \TYPO3\CMS\Core\Database\DatabaseConnection::INSERTquery() - as this is an overhead (\TYPO3\CMS\Core\Database\DatabaseConnection::INSERTquery() is called a second time after the call from \TYPO3\CMS\Core\Database\DatabaseConnection::exec_INSERT_query) IMO this should not be a permanent solution.
  *
  * @param   DatabaseConnection    TYPO3 database object (instance of \TYPO3\CMS\Core\Database\DatabaseConnection) used for last executed SQL query
  * @param   string      table name passed to last executed SQL query (see comment of \TYPO3\CMS\Core\Database\DatabaseConnection::exec_INSERTquery())
  * @param   array       array containing field/value-pairs passed to last executed SQL query (see comment of \TYPO3\CMS\Core\Database\DatabaseConnection::exec_INSERTquery())
  * @return  string      last built SQL query with tabs removed
  * @see                 class.\TYPO3\CMS\Core\Database\DatabaseConnection.php, \TYPO3\CMS\Core\Database\DatabaseConnection::exec_INSERTquery()
  * @author  Rainer Kuhn 
  */
 public static function returnLastBuiltInsertQuery(DatabaseConnection $dbObject, $table, $insertFieldsArr)
 {
     // try to get query from debug_lastBuiltQuery (works only for T3 3.8.0 with $GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true)
     $query = $dbObject->debug_lastBuiltQuery;
     // fallback for former versions of class.\TYPO3\CMS\Core\Database\DatabaseConnection.php (TYPO3 3.6.0-3.8.0beta1) or $GLOBALS['TYPO3_DB']->store_lastBuiltQuery _not_ set to true
     if (strlen($query) < 1) {
         $query = $dbObject->INSERTquery($table, $insertFieldsArr);
     }
     // remove tabs and return query string
     return str_replace(chr(9), '', $query);
 }