Помогите, странное поведение XPDO

На одном сайте была проблема, в итоге все свелось к тому, что данный код:

<?php

// Подключаем
define('MODX_API_MODE', true);
require 'index.php';
// Включаем обработку ошибок
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

$pathParentId = 0;
$temp = '`parent`, `alias`';
$temp2 = "`id`";
$query = $modx->newQuery('modResource');

$query->select($temp);
$query->where("{$temp2} = ?");
$query->prepare();
$query->stmt->execute(array($pathParentId));
$currResource= $query->stmt->fetch(PDO::FETCH_ASSOC);

var_dump($currResource);

На двух нормальных сайтах возвращал:

bool(false)

А на этом больном:

array(2) { [«parent»]=> string(1) «0» [«alias»]=> string(3) «239» }

Подскажите, что это может быть за проблема?
Peter Zenin
28 мая 2013, 22:29
modx.pro
1 411
0

Комментарии: 4

Виталий Киреев
29 мая 2013, 07:13
0
Ну значит на этом сайте есть ресурс с id=0.
    Peter Zenin
    29 мая 2013, 07:53
    0
    Нет, в коде нигде нет id 0, есть только parent 0
    И вообще этот код создает бредовый SQL, который по определению не сможет ничего вернуть кроме ошибки.\
    Так вот где-то вместо ошибки сделано чтоб выводился этот массив.
      Іван Клімчук
      29 мая 2013, 10:50
      0
      А что в БД в таблице modx_site_content? В коде у вас может и нет id=0, но в запросе у вас таки проверка на id = 0. И если в таблице есть ресурс с id=0 (что весьма странно), то он его и возвращает. Проверьте phpmyadmin каким-нибудь содержимое таблицы с ресурсами.
    Peter Zenin
    29 мая 2013, 18:35
    0
    А, точно…

    `id` =?

    и execute(array($pathParentId)) подставляет 0.

    Просто я смотрел код ->toSql() и там был? а не 0

    Благодарю, вы были правы, Виталий и Иван.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4