Для получения данных из базы данных из своего приложения МОДЕКС можно воспользоваться несколькими способами.
1. Обычный, старый “добрый” метод, запрос из учебников:
$conn = mysql_connect ("localhost", "root", "") or die ("Соединение не установлено!");
mysql_select_db("revodb") or die("База данных не найдена");
$query = "SELECT * FROM modx_item";
$result = mysql_query("SELECT * FROM modx_item where id_doc = '".$id."'");
mysql_close($conn);
while ($line = mysql_fetch_array($result)) {
echo $line[3];
}
2. Запрос через PDO:
$results = $modx->query("SELECT * FROM modx_users");
while ($r = $results->fetch(PDO::FETCH_ASSOC)) {
print_r($r); exit;
}
К этому-же, создать свою таблицу в базе данных из модекса можно так:
$result = $modx->exec("CREATE TABLE IF NOT EXISTS `test_table` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`test` char(1) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ");
print_r ($result);
3. Запрос через xPDO, здесь вы прописываете составные части запросы, а метод сам их склеивает и расставляет:
$query = $modx->newQuery(' Box');
// Помните: Синтаксис такой - имя_класса, ваш псевдоним. Обратите внимание, что фильтры тоже
// используют псевдоним.
$query->innerJoin('Owner','User');
//Здесь Owner – псевдоним, связанный с актуальным пользователем объекта User.
$query->where(array(
'Owner.name:LIKE' => '%a%',
'Box.width:>=' => 10,
'Box.height:!=' => 2,
'Box.color:IN' => array('red','green','blue'),
));
$query->sortby('Box.name','ASC');
$query->sortby(' Box.height','DESC');
$query->limit(4);
$boxes = $modx ->getCollection(' Box ',$query); //получаем объекты или
$query ->prepare();$query->stmt->execute(); // получим массив
$result = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
Чистый where запроса (например):
(
( `Person`.`first_name` = 'Bob'
OR ( `Person`.`last_name` LIKE 'Boblablaw' AND `Person`.`gender` = 'M' )
)
AND password IS NOT NULL
)
можно переписать так:
$query = $xpdo->newQuery('Person');
$query->where(array(
array(
'first_name:=' => 'Bob',
array(
'OR:last_name:LIKE' => 'Boblablaw',
'AND:gender:=' => 'M',
),
),
'password:!=' => null,
));
// Debugging ( просмотр лога выполнения запроса SQL )
$c = $xpdo->newQuery('Person');
// здеяь добавляете свой фильтр выборки данных...
$c->prepare();
print $c->toSQL(); // или
print_r($c->stmt->errorInfo());
Комментарии ()