За последние 24 часа нас посетили 20379 программистов и 1093 робота. Сейчас ищут 411 программистов ...

RedBeanPHP не пишет в базу sql. Вопрос знатокам. Где ошибка?

Тема в разделе "PHP и базы данных", создана пользователем Иван Сила, 3 фев 2021.

Метки:
  1. Иван Сила

    Иван Сила Новичок

    С нами с:
    1 фев 2021
    Сообщения:
    11
    Симпатии:
    0
    Всем доброго дня. Проблема такого плана.
    Пытаюсь прикрутить RedBeanPHP к Sql. Подключил файл как надо, и вроде код работает, выводит в браузер как надо, а в базу не пишет.
    Подскажите знатоки RedBean, где моя ошибка?
    Кусок кода см. ниже.
    Буду благодарен за помощь в нахождении ошибки:

    <code>
    <?php
    #Настраиваем подключение
    require_once('rb.php');
    R::setup('mysql:host=localhost; dbname=red', 'root', '', true);

    #Функция для читабельного отображения в браузере
    function debug($data)
    {
    echo '<pre>';
    print_r($data);
    echo '</pre>';
    }

    #Проверяем соединение с базой
    if (!R::testConnection()) {
    echo "Соединение с базой не установлено";
    } else {
    echo "Соединение с базой установлено\n";
    '<br>';
    }

    # Устанавливаем метод для использования префиксов
    R::ext('xdispense', function ($type) {
    return R::getRedBean()->dispense($type);
    });

    #Получаем данные из таблицы
    $rows = R::getAll('SELECT product_id, name, meta_title, meta_description, meta_keyword FROM oc_product_description WHERE product_id <= 420');

    foreach ($rows as $row) {

    $product_id = $row['product_id'];
    $name = $row['name'];
    $title = $row['meta_title'] = "$name покупайте товарищи. Цена просто Супер";
    $description = $row['meta_description'] = "$name . покупайте в магазине товарищи. Самый лучший выбор";
    $keyword = $row['meta_keyword'] = "$name купить здесь, $name там, $name продажа в тут, $name цена за углом, $name распродажа в подворотне, ";

    $count = R::exec('UPDATE oc_product_description SET meta_title = "$title", meta_description = "$description", meta_keyword = "$keyword" WHERE product_id = "$product_id"');

    debug($row);
    echo $count;
    }
    </code>
     
  2. Иван Сила

    Иван Сила Новичок

    С нами с:
    1 фев 2021
    Сообщения:
    11
    Симпатии:
    0
    Разобрался сам. Надо было вместо значений использовать биндинги, тогда все работает. И кавычки двойные в запросе.
    Хотя в документации стоят одинарные. Какая то кривая документация, с ошибками. Капец
    Всем спасибо за внимание и удачи
     
  3. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Иван Сила, хорошо, что довели до работоспособного состояния.
    Отказ от прямого включения путём конкатенации значений переменных в запрос - замечательное решение.
    А чтобы в дальнейшем не спотыкаться при использовании строк в PHP, узнайте из статьи PHP: Строки - Manual, чем строки, заключённые в кавычки отключаются от строк, обрамлённых апострофами.
    Ведь использование в строке значения переменной в скриптах PHP - не такое уж и редкое явление.
     
  4. Иван Сила

    Иван Сила Новичок

    С нами с:
    1 фев 2021
    Сообщения:
    11
    Симпатии:
    0
    Спасибо. Ознакомимся обязательно