Перейти к содержанию

alxbelarus

Пользователи
  • Постов

    8
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные alxbelarus

  1. 14 часов назад, Morphe сказал:

     

    Спойлер
    try {
        $dsn = 'mysql:host=your_host;dbname=your_dbname;charset=utf8';
        $username = 'your_username';
        $password = 'your_password';
        $options = [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES   => false,
        ];
    
        $pdo = new PDO($dsn, $username, $password, $options);
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
        exit;
    }
    
    $stmt = $pdo->query('SELECT * FROM your_table');
    $results = $stmt->fetchAll();
    
    foreach ($results as $row) {
        $postContent = $row['your_column'];
        
        // Подставьте ваши значения для $topicId и $authorId
        $topicId = 1;
        $authorId = 1;
    
        $topic = \IPS\forums\Topic::load($topicId);
        $post = \IPS\forums\Topic\Post::create([
            'topic'         => $topic,
            'author'        => \IPS\Member::load($authorId),
            'post'          => $postContent,
            'post_date'     => time(),
        ]);
    
        $post->save();
    }

     

    Попробуйте так, это пример кода который подключается к внешней базе данных, получает данные и вставляет их в postContainer

  2. 9 часов назад, Morphe сказал:

    Как получить идентификатор пользователя, который отправил сообщение в блок?
    Мне нужно получить идентификатор автора, который публикует сообщения в разделе Execute.

    try {
        $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $chardata = $pdo->prepare('SELECT * FROM characters WHERE forum_id = ?');
        $chardata->execute('Здесь нужно написать идентификатор автора сообщения.');
        $row = $charveri->fetch(PDO::FETCH_ASSOC);
    
    } catch (PDOException $e) {
        echo 'Database Error: ' . $e->getMessage();
    } catch (Exception $e) {
        echo 'Error: ' . $e->getMessage();
    }

     

    Не уверен что поможет, но все же 🙂
     

    Спойлер
    try {
        // Соединение с базой данных
        $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        // Получение текущего пользователя IPS 4
        $member = \IPS\Member::loggedIn();
        $userId = $member->member_id;
    
        // Выполнение запроса к базе данных
        $chardata = $pdo->prepare('SELECT * FROM characters WHERE forum_id = ?');
        $chardata->execute([$userId]);
        $row = $chardata->fetch(PDO::FETCH_ASSOC);
    
        if ($row) {
            // Обработка данных
            print_r($row);
        } else {
            echo 'No data found for this user.';
        }
    } catch (PDOException $e) {
        echo 'Database Error: ' . $e->getMessage();
    } catch (Exception $e) {
        echo 'Error: ' . $e->getMessage();
    }

     

    В этом примере:

    Подключение к базе данных осуществляется с использованием PDO.
    Получение текущего авторизованного пользователя IPS 4 происходит через \IPS\Member::loggedIn().
    member_id текущего пользователя используется для выполнения запроса к базе данных.
    Этот код выполняет запрос, используя идентификатор текущего авторизованного пользователя, и выводит результаты, если они найдены.

  3. И какая версия IPB у вас установлена? Если 3.4 то на версии PHP 5.3 должно работать отлично)  Хостинги сейчас не поддерживают данную версию и говорят заказывать VPS там вы сможете понизить до нужной вам версии.   Или же попробуйте следующее решение ( мало вероятно что поможет но все же ) Найдите строку 259 (и другие строки, где используется подобный синтаксис) и замените фигурные скобки на квадратные.

    Пример:

    // Было
    $variable = $array{key};
    
    // Стало
    $variable = $array[key];

    Если в строке 259 используется доступ к элементу строки, то замените фигурные скобки аналогично:

    // Было
    $char = $string{0};
    
    // Стало
    $char = $string[0];

    Это должно устранить ошибку. Если в файле есть другие строки с таким же синтаксисом, замените их аналогичным образом.

  4. Эта ошибка возникает из-за использования синтаксиса доступа к элементам массива или строки с помощью фигурных скобок {}, который больше не поддерживается в PHP 7.4 и выше.  ИЗ этого следует что у вас установлена версия PHP от 7.4 Понизьте версию попробуйте до 7.3

×
×
  • Создать...