本文整理汇总了PHP中OC\DB\Connection::executeQuery方法的典型用法代码示例。如果您正苦于以下问题:PHP Connection::executeQuery方法的具体用法?PHP Connection::executeQuery怎么用?PHP Connection::executeQuery使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OC\DB\Connection
的用法示例。
在下文中一共展示了Connection::executeQuery方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: dropTable
/**
* @brief drop a table
* @param string $tableName the table to drop
*/
public function dropTable($tableName)
{
$sm = $this->conn->getSchemaManager();
$fromSchema = $sm->createSchema();
$toSchema = clone $fromSchema;
$toSchema->dropTable($tableName);
$sql = $fromSchema->getMigrateToSql($toSchema, $this->conn->getDatabasePlatform());
$this->conn->executeQuery($sql);
}
示例2: getUsersForValue
/**
* Gets the users for a preference
* @param string $app
* @param string $key
* @param string $value
* @return array
*/
public function getUsersForValue($app, $key, $value)
{
$users = array();
$query = 'SELECT `userid` ' . ' FROM `*PREFIX*preferences` ' . ' WHERE `appid` = ? AND `configkey` = ? AND ';
if (\OC_Config::getValue('dbtype', 'sqlite') === 'oci') {
//FIXME oracle hack: need to explicitly cast CLOB to CHAR for comparison
$query .= ' to_char(`configvalue`)= ?';
} else {
$query .= ' `configvalue` = ?';
}
$result = $this->conn->executeQuery($query, array($app, $key, $value));
while ($row = $result->fetch()) {
$users[] = $row['userid'];
}
return $users;
}
示例3: getValues
/**
* get multiply values, either the app or key can be used as wildcard by setting it to false
*
* @param string|false $app
* @param string|false $key
* @return array|false
*/
public function getValues($app, $key)
{
if (($app !== false) == ($key !== false)) {
return false;
}
if ($app !== false) {
return $this->getAppValues($app);
} else {
$query = 'SELECT `configvalue`, `appid` FROM `*PREFIX*appconfig` WHERE `configkey` = ?';
$result = $this->conn->executeQuery($query, array($key));
$values = array();
while ($row = $result->fetch(\PDO::FETCH_ASSOC)) {
$values[$row['appid']] = $row['configvalue'];
}
return $values;
}
}
示例4: resynchronizeDatabaseSequences
/**
* @brief Resynchronizes all sequences of a database after using INSERTs
* without leaving out the auto-incremented column.
* @param \OC\DB\Connection $conn
* @return null
*/
public function resynchronizeDatabaseSequences(Connection $conn)
{
$databaseName = $conn->getDatabase();
$conn->getConfiguration()->setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
foreach ($conn->getSchemaManager()->listSequences() as $sequence) {
$sequenceName = $sequence->getName();
$sqlInfo = 'SELECT table_schema, table_name, column_name
FROM information_schema.columns
WHERE column_default = ? AND table_catalog = ?';
$sequenceInfo = $conn->fetchAssoc($sqlInfo, array("nextval('{$sequenceName}'::regclass)", $databaseName));
$tableName = $sequenceInfo['table_name'];
$columnName = $sequenceInfo['column_name'];
$sqlMaxId = "SELECT MAX({$columnName}) FROM {$tableName}";
$sqlSetval = "SELECT setval('{$sequenceName}', ({$sqlMaxId}))";
$conn->executeQuery($sqlSetval);
}
}
示例5: getValueForUsers
/**
* Gets the preference for an array of users
* @param string $app
* @param string $key
* @param array $users
* @return array Mapped values: userid => value
*/
public function getValueForUsers($app, $key, $users)
{
if (empty($users) || !is_array($users)) {
return array();
}
$chunked_users = array_chunk($users, 50, true);
$placeholders_50 = implode(',', array_fill(0, 50, '?'));
$userValues = array();
foreach ($chunked_users as $chunk) {
$queryParams = $chunk;
array_unshift($queryParams, $key);
array_unshift($queryParams, $app);
$placeholders = sizeof($chunk) == 50 ? $placeholders_50 : implode(',', array_fill(0, sizeof($chunk), '?'));
$query = 'SELECT `userid`, `configvalue` ' . ' FROM `*PREFIX*preferences` ' . ' WHERE `appid` = ? AND `configkey` = ?' . ' AND `userid` IN (' . $placeholders . ')';
$result = $this->conn->executeQuery($query, $queryParams);
while ($row = $result->fetch()) {
$userValues[$row['userid']] = $row['configvalue'];
}
}
return $userValues;
}
示例6: run
/**
* Converts legacy home storage ids in the format
* "local::/data/dir/path/userid/" to the new format "home::userid"
*/
public function run()
{
// only run once
if ($this->config->getAppValue('core', 'repairlegacystoragesdone') === 'yes') {
return;
}
$dataDir = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data/');
$dataDir = rtrim($dataDir, '/') . '/';
$dataDirId = 'local::' . $dataDir;
$count = 0;
$hasWarnings = false;
$this->connection->beginTransaction();
// note: not doing a direct UPDATE with the REPLACE function
// because regexp search/extract is needed and it is not guaranteed
// to work on all database types
$sql = 'SELECT `id`, `numeric_id` FROM `*PREFIX*storages`' . ' WHERE `id` LIKE ?' . ' ORDER BY `id`';
$result = $this->connection->executeQuery($sql, array($dataDirId . '%'));
while ($row = $result->fetch()) {
$currentId = $row['id'];
// one entry is the datadir itself
if ($currentId === $dataDirId) {
continue;
}
try {
if ($this->fixLegacyStorage($currentId, (int) $row['numeric_id'])) {
$count++;
}
} catch (\OC\RepairException $e) {
$hasWarnings = true;
$this->emit('\\OC\\Repair', 'warning', array('Could not repair legacy storage ' . $currentId . ' automatically.'));
}
}
// check for md5 ids, not in the format "prefix::"
$sql = 'SELECT COUNT(*) AS "c" FROM `*PREFIX*storages`' . ' WHERE `id` NOT LIKE \'%::%\'';
$result = $this->connection->executeQuery($sql);
$row = $result->fetch();
// find at least one to make sure it's worth
// querying the user list
if ((int) $row['c'] > 0) {
$userManager = \OC_User::getManager();
// use chunks to avoid caching too many users in memory
$limit = 30;
$offset = 0;
do {
// query the next page of users
$results = $userManager->search('', $limit, $offset);
$storageIds = array();
$userIds = array();
foreach ($results as $uid => $userObject) {
$storageId = $dataDirId . $uid . '/';
if (strlen($storageId) <= 64) {
// skip short storage ids as they were handled in the previous section
continue;
}
$storageIds[$uid] = $storageId;
}
if (count($storageIds) > 0) {
// update the storages of these users
foreach ($storageIds as $uid => $storageId) {
$numericId = \OC\Files\Cache\Storage::getNumericStorageId($storageId);
try {
if (!is_null($numericId) && $this->fixLegacyStorage($storageId, (int) $numericId)) {
$count++;
}
} catch (\OC\RepairException $e) {
$hasWarnings = true;
$this->emit('\\OC\\Repair', 'warning', array('Could not repair legacy storage ' . $storageId . ' automatically.'));
}
}
}
$offset += $limit;
} while (count($results) >= $limit);
}
$this->emit('\\OC\\Repair', 'info', array('Updated ' . $count . ' legacy home storage ids'));
$this->connection->commit();
if ($hasWarnings) {
$this->emit('\\OC\\Repair', 'warning', array('Some legacy storages could not be repaired. Please manually fix them then re-run ./occ maintenance:repair'));
} else {
// if all were done, no need to redo the repair during next upgrade
$this->config->setAppValue('core', 'repairlegacystoragesdone', 'yes');
}
}
示例7: copyTable
protected function copyTable(Connection $fromDB, Connection $toDB, $table, InputInterface $input, OutputInterface $output)
{
/** @var $progress \Symfony\Component\Console\Helper\ProgressHelper */
$progress = $this->getHelperSet()->get('progress');
$query = 'SELECT COUNT(*) FROM ' . $table;
$count = $fromDB->fetchColumn($query);
$query = 'SELECT * FROM ' . $table;
$statement = $fromDB->executeQuery($query);
$progress->start($output, $count);
$progress->setRedrawFrequency($count > 100 ? 5 : 1);
while ($row = $statement->fetch()) {
$progress->advance();
if ($input->getArgument('type') === 'oci') {
$data = $row;
} else {
$data = array();
foreach ($row as $columnName => $value) {
$data[$toDB->quoteIdentifier($columnName)] = $value;
}
}
$toDB->insert($table, $data);
}
$progress->finish();
}