ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
ilDBPdoMySQL Class Reference

Class ilDBPdoMySQL. More...

+ Inheritance diagram for ilDBPdoMySQL:
+ Collaboration diagram for ilDBPdoMySQL:

Public Member Functions

 supportsTransactions ()
 
 initHelpers ()
 
 supportsEngineMigration ()
 
 migrateAllTablesToEngine ($engine=ilDBConstants::MYSQL_ENGINE_INNODB)
 
 migrateAllTablesToCollation ($collation=ilDBConstants::MYSQL_COLLATION_UTF8MB4)
 
 supportsCollationMigration ()
 
 nextId ($table_name)
 
 doesCollationSupportMB4Strings ()
 
- Public Member Functions inherited from ilDBPdo
 connect ($return_false_for_error=false)
 
 initHelpers ()
 
 getFieldDefinition ()
 
 setFieldDefinition ($field_definition)
 
 createDatabase ($a_name, $a_charset="utf8", $a_collation="")
 
 getLastErrorCode ()
 
 initFromIniFile ($tmpClientIniFile=null)
 
 generateDSN ()
 
 quoteIdentifier ($identifier, $check_option=false)
 
 nextId ($table_name)
 
 createTable ($table_name, $fields, $drop_table=false, $ignore_erros=false)
 
 checkColumnName ($a_name)
 
 addPrimaryKey ($table_name, $primary_keys)
 
 dropIndexByFields ($table_name, $fields)
 
 getPrimaryKeyIdentifier ()
 
 createSequence ($table_name, $start=1)
 
 tableExists ($table_name)
 
 tableColumnExists ($table_name, $column_name)
 
 addTableColumn ($table_name, $column_name, $attributes)
 
 dropTable ($table_name, $error_if_not_existing=true)
 
 query ($query)
 
 dropSequence ($table_name)
 
 dropTableColumn ($table_name, $column_name)
 
 renameTableColumn ($table_name, $column_old_name, $column_new_name)
 
 insert ($table_name, $values)
 
 fetchObject ($query_result)
 
 update ($table_name, $columns, $where)
 
 manipulate ($query)
 
 fetchAssoc ($query_result)
 
 numRows ($query_result)
 
 quote ($value, $type=null)
 
 indexExistsByFields ($table_name, $fields)
 
 addIndex ($table_name, $fields, $index_name='', $fulltext=false)
 
 addFulltextIndex ($a_table, $a_fields, $a_name="in")
 
 dropFulltextIndex ($a_table, $a_name)
 Drop fulltext index. More...
 
 isFulltextIndex ($a_table, $a_name)
 Is index a fulltext index? More...
 
 getIndexName ($index_name_base)
 
 getSequenceName ($table_name)
 
 constraintName ($a_table, $a_constraint)
 Determine contraint name by table name and constraint name. More...
 
 getDSN ()
 
 getDBType ()
 
 setDBType ($type)
 
 lockTables ($tables)
 
 unlockTables ()
 
 in ($field, $values, $negate=false, $type="")
 
 queryF ($query, $types, $values)
 
 manipulateF ($query, $types, $values)
 
 useSlave ($bool)
 
 setLimit ($limit, $offset=0)
 Set the Limit for the next Query. More...
 
 like ($column, $type, $value="?", $case_insensitive=true)
 
 now ()
 
 replace ($table, $primaryKeys, $otherColumns)
 Replace into method. More...
 
 equals ($columns, $value, $type, $emptyOrNull=false)
 
 getHost ()
 
 setHost ($host)
 
 getDbname ()
 
 setDbname ($dbname)
 
 getCharset ()
 
 setCharset ($charset)
 
 getUsername ()
 
 setUsername ($username)
 
 getPassword ()
 
 setPassword ($password)
 
 getPort ()
 
 setPort ($port)
 
 setDBUser ($user)
 
 setDBPort ($port)
 
 setDBPassword ($password)
 
 setDBHost ($host)
 
 upper ($a_exp)
 
 lower ($a_exp)
 
 substr ($a_exp, $a_pos=1, $a_len=-1)
 
 prepareManip ($query, $types=null)
 
 prepare ($query, $types=null, $result_types=null)
 
 enableResultBuffering ($a_status)
 
 supportsSlave ()
 
 supportsFulltext ()
 
 supportsTransactions ()
 
 supports ($feature)
 
 listTables ()
 
 loadModule ($module)
 
 getAllowedAttributes ()
 
Returns
array
More...
 
 sequenceExists ($sequence)
 
 listSequences ()
 
 concat (array $values, $allow_null=true)
 
 locate ($a_needle, $a_string, $a_start_pos=1)
 
 modifyTableColumn ($table, $a_column, $a_attributes)
 
 renameTable ($a_name, $a_new_name)
 
 checkTableName ($a_name)
 
 beginTransaction ()
 
 commit ()
 
 rollback ()
 
 dropIndex ($a_table, $a_name="i1")
 
 setStorageEngine ($storage_engine)
 
 getStorageEngine ()
 
 queryCol ($query, $type=PDO::FETCH_ASSOC, $colnum=0)
 
 queryRow ($query, $types=null, $fetchmode=ilDBConstants::FETCHMODE_DEFAULT)
 
 getServerVersion ($native=false)
 
 escape ($value, $escape_wildcards=false)
 
 escapePattern ($text)
 
 migrateAllTablesToEngine ($engine=ilDBConstants::MYSQL_ENGINE_INNODB)
 
 migrateAllTablesToCollation ($collation=ilDBConstants::MYSQL_COLLATION_UTF8MB4)
 
 supportsCollationMigration ()
 
 supportsEngineMigration ()
 
 checkIndexName ($name)
 
 addUniqueConstraint ($table, $fields, $name="con")
 
 dropUniqueConstraint ($a_table, $a_name="con")
 
 dropUniqueConstraintByFields ($a_table, $a_fields)
 
 getLastInsertId ()
 
 buildAtomQuery ()
 
 uniqueConstraintExists ($table, array $fields)
 
 dropPrimaryKey ($table_name)
 
 executeMultiple ($stmt, $a_data)
 
 fromUnixtime ($a_expr, $a_to_text=true)
 
 unixTimestamp ()
 
 autoExecute ($tablename, $fields, $mode=ilDBConstants::AUTOQUERY_INSERT, $where=false)
 Generate an insert, update or delete query and call prepare() and execute() on it. More...
 
 getDBVersion ()
 
 sanitizeMB4StringIfNotSupported ($query)
 
Parameters
$querystring to sanitize, all MB4-Characters like emojis will re replaced with ???
Returns
string sanitized query
More...
 
 doesCollationSupportMB4Strings ()
 
 groupConcat ($a_field_name, $a_seperator=",", $a_order=null)
 
Parameters
string$a_field_name
string$a_seperator
string$a_order
Returns
string
More...
 
 cast ($a_field_name, $a_dest_type)
 
Parameters
string$a_field_name
string$a_dest_type
Returns
string;
More...
 
- Public Member Functions inherited from ilDBInterface
 fetchAll ($query_result, $fetch_mode=ilDBConstants::FETCHMODE_ASSOC)
 
 substr ($a_exp)
 
 execute ($stmt, $data=array())
 
 free ($a_st)
 

Protected Member Functions

 initSQLMode ()
 
 getAdditionalAttributes ()
 
- Protected Member Functions inherited from ilDBPdo
 initSQLMode ()
 
 getAttributes ()
 
 getAdditionalAttributes ()
 
 checkTableColumns ($a_cols)
 
 checkColumn ($a_col, $a_def)
 
 checkColumnDefinition ($a_def, $a_modify_mode=false)
 
 appendLimit ($query)
 
 autoPrepare ($table, $table_fields, $mode=ilDBConstants::AUTOQUERY_INSERT, $where=false, $types=null, $result_types=ilDBConstants::PREPARE_MANIP)
 
 buildManipSQL ($table, $table_fields, $mode, $where=false)
 

Additional Inherited Members

- Static Public Member Functions inherited from ilDBPdo
static isReservedWord ($a_word)
 
- Static Public Member Functions inherited from ilDBInterface
static getReservedWords ()
 Get reserved words. More...
 
- Data Fields inherited from ilDBPdo
const FEATURE_TRANSACTIONS = 'transactions'
 
const FEATURE_FULLTEXT = 'fulltext'
 
const FEATURE_SLAVE = 'slave'
 
- Protected Attributes inherited from ilDBPdo
 $host = ''
 
 $dbname = ''
 
 $charset = 'utf8'
 
 $username = ''
 
 $password = ''
 
 $port = 3306
 
 $pdo
 
 $manager
 
 $reverse
 
 $limit = null
 
 $offset = null
 
 $storage_engine = 'MyISAM'
 
 $dsn = ''
 
 $attributes
 
 $db_type = ''
 
 $error_code = 0
 
 $field_definition
 

Detailed Description

Class ilDBPdoMySQL.

Author
Fabian Schmid fs@st.nosp@m.uder.nosp@m.-raim.nosp@m.ann..nosp@m.ch

Definition at line 9 of file class.ilDBPdoMySQL.php.

Member Function Documentation

◆ doesCollationSupportMB4Strings()

ilDBPdoMySQL::doesCollationSupportMB4Strings ( )

Implements ilDBInterface.

Definition at line 139 of file class.ilDBPdoMySQL.php.

140  {
141  // Currently ILIAS does not support utf8mb4, after that ilDB could check like this:
142  // static $supported;
143  // if (!isset($supported)) {
144  // $q = "SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = %s;";
145  // $res = $this->queryF($q, ['text'], [$this->getDbname()]);
146  // $data = $this->fetchObject($res);
147  // $supported = ($data->default_character_set_name === 'utf8mb4');
148  // }
149 
150  return false;
151  }

◆ getAdditionalAttributes()

ilDBPdoMySQL::getAdditionalAttributes ( )
protected
Returns
array

Definition at line 47 of file class.ilDBPdoMySQL.php.

48  {
49  return array(
50  PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
51  PDO::ATTR_TIMEOUT => 300 * 60,
52  );
53  }

◆ initHelpers()

ilDBPdoMySQL::initHelpers ( )

Definition at line 21 of file class.ilDBPdoMySQL.php.

22  {
23  $this->manager = new ilDBPdoManager($this->pdo, $this);
24  $this->reverse = new ilDBPdoReverse($this->pdo, $this);
25  $this->field_definition = new ilDBPdoMySQLFieldDefinition($this);
26  }
Class ilDBPdoMySQLFieldDefinition.
Class ilDBPdoReverse.
Class ilDBPdoManager.

◆ initSQLMode()

ilDBPdoMySQL::initSQLMode ( )
protected

Definition at line 29 of file class.ilDBPdoMySQL.php.

30  {
31  $this->pdo->query("SET SESSION sql_mode = 'IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';");
32  }

◆ migrateAllTablesToCollation()

ilDBPdoMySQL::migrateAllTablesToCollation (   $collation = ilDBConstants::MYSQL_COLLATION_UTF8MB4)

Implements ilDBPdoInterface.

Definition at line 83 of file class.ilDBPdoMySQL.php.

References Vendor\Package\$e, $errors, ilDBPdo\loadModule(), and ilDBConstants\MODULE_MANAGER.

84  {
85  $ilDBPdoManager = $this->loadModule(ilDBConstants::MODULE_MANAGER);
86  $errors = array();
87  foreach ($ilDBPdoManager->listTables() as $table_name) {
88  $q = "ALTER TABLE {$this->quoteIdentifier($table_name)} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;";
89  try {
90  $this->pdo->exec($q);
91  } catch (PDOException $e) {
92  $errors[] = $table_name;
93  }
94  }
95 
96  return $errors;
97  }
$errors
loadModule($module)
+ Here is the call graph for this function:

◆ migrateAllTablesToEngine()

ilDBPdoMySQL::migrateAllTablesToEngine (   $engine = ilDBConstants::MYSQL_ENGINE_INNODB)
Parameters
string$engine
Returns
array

Implements ilDBPdoInterface.

Definition at line 60 of file class.ilDBPdoMySQL.php.

References Vendor\Package\$e, $engine, $errors, ilDBPdo\listTables(), and ilDBPdo\queryCol().

61  {
62  $engines = $this->queryCol('SHOW ENGINES');
63  if (!in_array($engine, $engines)) {
64  return array();
65  }
66 
67  $errors = array();
68  foreach ($this->listTables() as $table) {
69  try {
70  $this->pdo->exec("ALTER TABLE {$table} ENGINE={$engine}");
71  } catch (Exception $e) {
72  $errors[$table] = $e->getMessage();
73  }
74  }
75 
76  return $errors;
77  }
$errors
$engine
Definition: workflow.php:89
queryCol($query, $type=PDO::FETCH_ASSOC, $colnum=0)
+ Here is the call graph for this function:

◆ nextId()

ilDBPdoMySQL::nextId (   $table_name)
Parameters
string$table_name
Returns
int

Implements ilDBInterface.

Definition at line 113 of file class.ilDBPdoMySQL.php.

References Vendor\Package\$e, $query, $result, ilDBPdo\getSequenceName(), ilDBPdo\query(), and ilDBPdo\quoteIdentifier().

114  {
115  $sequence_name = $this->quoteIdentifier($this->getSequenceName($table_name), true);
116  $seqcol_name = 'sequence';
117  $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (NULL)";
118  try {
119  $this->pdo->exec($query);
120  } catch (PDOException $e) {
121  // no such table check
122  }
123 
124  $result = $this->query('SELECT LAST_INSERT_ID() AS next');
125  $value = $result->fetchObject()->next;
126 
127  if (is_numeric($value)) {
128  $query = "DELETE FROM $sequence_name WHERE $seqcol_name < $value";
129  $this->pdo->exec($query);
130  }
131 
132  return $value;
133  }
getSequenceName($table_name)
$result
quoteIdentifier($identifier, $check_option=false)
query($query)
$query
+ Here is the call graph for this function:

◆ supportsCollationMigration()

ilDBPdoMySQL::supportsCollationMigration ( )

Implements ilDBPdoInterface.

Definition at line 103 of file class.ilDBPdoMySQL.php.

104  {
105  return true;
106  }

◆ supportsEngineMigration()

ilDBPdoMySQL::supportsEngineMigration ( )
Returns
bool

Implements ilDBPdoInterface.

Definition at line 38 of file class.ilDBPdoMySQL.php.

39  {
40  return true;
41  }

◆ supportsTransactions()

ilDBPdoMySQL::supportsTransactions ( )
Returns
bool

Implements ilDBInterface.

Definition at line 15 of file class.ilDBPdoMySQL.php.

16  {
17  return false;
18  }

The documentation for this class was generated from the following file: