За последние 24 часа нас посетили 147868 программистов и 6268 роботов. Сейчас ищут 2637 программистов ...

Как перезаписать значений в базе данных

Тема в разделе "MySQL", создана пользователем sotex2, 20 мар 2024.

  1. sotex2

    sotex2 Активный пользователь

    С нами с:
    28 сен 2019
    Сообщения:
    24
    Симпатии:
    0
    Подскажите правильный ли скрипт ниже для перезаписи доп. полей в базе данных на движке DLE. Задача такая,чтобы при помощи скрипта можно было перезаписать в доп.полях значения. есть три доп.поля - это title, total-phones, price и в них нужно у каждой новости перезаписать значения. в данный момент скрипт не работает, подскажите, что не так.

    ---------------------------------------------------------

    Код (Text):
    1. <?php
    2.  
    3. $dbhost = "localhost"; // Хост
    4. $dbuser = "*****"; // Пользователь баз данных
    5. $dbpassword = "*****"; // Пароль
    6. $dbname = "*****"; // Имя баз данных
    7.  
    8. // Подключение к базе
    9. $db = new mysqli($dbhost, $dbuser, $dbpassword, $dbname);
    10.  
    11. // Проверка подключения с баз данных
    12. if ($db->connect_errno) {
    13.   echo '<p>Не удалось подключиться к базе данных!</p>';
    14.   echo $db->connect_error;
    15.   exit;
    16. }
    17.  
    18. $db->set_charset('utf8');
    19.  
    20. $_POST['id']    = $db->real_escape_string($_POST['id']);
    21. $_POST['title']    = $db->real_escape_string($_POST['title']);
    22. $_POST['price'] = $db->real_escape_string($_POST['price']);
    23. $_POST['total-phones'] = $db->real_escape_string($_POST['total-phones']);
    24.  
    25.  
    26. $title = $db->query("UPDATE dle_post  SET xfields='{$_POST['total-phones']}' WHERE id='{$_POST['id']}'");
    27. $price = $db->query("UPDATE dle_post  SET xfields='{$_POST['price']}' WHERE id='{$_POST['id']}'");
    28. $phones = $db->query("UPDATE dle_post  SET xfields='{$_POST['total-phones']}' WHERE id='{$_POST['id']}'");
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день!
    Не так, то что команде в UPDATE должны быть разные поля - title, total-phones, price,
    а не xfields. В случае успеха $db->query возвращает true, а не значение записанное в поле.
    Попробуйте сделать так
    PHP:
    1. $query = "UPDATE dle_post SET
    2.    title = '{$_POST['title']}',
    3.    total-phones = '{$_POST['total-phones']}',
    4.    price = '{$_POST['price']}'
    5. WHERE id='{$_POST['id']}'";
    6. $result = $db->query($query);
    Удачи!
     
    #2 Vladimir Kheifets, 20 мар 2024
    Последнее редактирование: 20 мар 2024
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    PHP:
    1. $query = "UPDATE dle_post SET
    2.   title = ?,
    3.   total-phones = ?,
    4.   price = ?
    5. WHERE id= ?";
    6.  
    7. $mysqli -> execute_query( $query, [ $title, $total, $price, $id ] )
    Без мусора.
     
  4. sotex2

    sotex2 Активный пользователь

    С нами с:
    28 сен 2019
    Сообщения:
    24
    Симпатии:
    0
    это было слишком просто. нужно перезаписать на сайте, который на движке DLE в таблице dle_post, поле xfields, значения total-phones и price. эти значения все доп.полей находятся в одном поле и как добраться до этих значений и перезаписать их не получается.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    структуру таблицы в студию
    --- Добавлено ---
    $_POST['id'] за что отвечает ?
     
  6. sotex2

    sotex2 Активный пользователь

    С нами с:
    28 сен 2019
    Сообщения:
    24
    Симпатии:
    0