/** * @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); }
/** * 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()); }
/** * 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); }