Теряются данные

Добрый вечер!

Столкнулся с очень странной ситуацией. В сниппет передается город
$from = $scriptProperties['from'];
echo $from; // данные прилетают
$sql = "SELECT `code` FROM `cityes` WHERE `name` = '$from'";
$query = new xPDOCriteria($modx, $sql, array());
if ($query->prepare() && $query->stmt->execute()){
    $arFrom = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
    echo '<pre>';
    print_r($arFrom); // тут пустой массив
    echo '</pre>';
}
Если подставить вместо $form необходимое значение в sql запросе, то массив нормально образуется. Кто-то сталкивался с подобной проблемой? MODX 2.6.3, PHP 7

Заранее благодарен.
Вадим Раевский
02 мая 2018, 20:21
modx.pro
869
0

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

Сергей Шлоков
03 мая 2018, 08:24
0
Эх, молодежь. Это называется хакеры всех стран, заходите! Значение from откуда прилетает? С сайта?

Используйте подготовленные запросы.

Кстати, для отладки есть удобный метод toSql(), который выдает подготовленный распарсенный sql запрос.
    Вадим Раевский
    03 мая 2018, 09:22
    0
    Значение передается в сниппет через FormItRetriver,
    $sql = "SELECT `code` FROM `cityes` WHERE `name` = :name";
    // Подготавливаем шаблон SQL запроса
    $statement = $modx->prepare($sql);
    // Выполняем запрос подставляя данные
    
    if ( $statement->execute(array("name"=>$from)) ) {
        echo $from; //Значение есть
        $result = $statement->fetchAll(PDO::FETCH_ASSOC);
        echo '<pre>';
        print_r($result); //Также, пусто
        echo '</pre>';
    }
      Вадим Раевский
      03 мая 2018, 09:34
      0
      Убрал вызов через FormItRetriver, поставил Забор данных через {$.post}, все получилось. Спасибо.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3