Как правильно записать данные в базу?

Ссылка скопирована
1 ответ

Здравствуйте!
Не знаю как правильно записать данные в базу.

public function index() {          $this->db->query("UPDATE " . DB_PREFIX . "product SET oct_stickers = ''");     $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value WHERE product_id = '" . $item['product_id'] . "' AND option_id in ('10101', '10063')");     foreach($query->rows as $key => $item){          $this->db->query("UPDATE " . DB_PREFIX . "product SET oct_stickers = 'My text' WHERE product_id = '" . $item['product_id'] . "'");        }}

public function index() { $this->db->query("UPDATE " . DB_PREFIX . "product SET oct_stickers = ''"); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value WHERE product_id = '" . $item['product_id'] . "' AND option_id in ('10101', '10063')"); foreach($query->rows as $key => $item){ $this->db->query("UPDATE " . DB_PREFIX . "product SET oct_stickers = 'My text' WHERE product_id = '" . $item['product_id'] . "'"); }}

Первым делом, в таблице product я обновляю колонку oct_stickers

Вторым запросом в таблице option_value я вывожу две строки с одинаковым ИД и с нужными option_id
И если все правильно сошлось, нужно записать данные в таблицу product третьем запросом.
Но почему-то не работает. Вернее, знаю, из за нехватки знаний.

Кто разбирается, помогите пожалуйста правильно настроить

Дополнительно:

UPDATE ${DB_PREFIX}product SET oct_stickers =  IF(product_id = ${productId} AND option_id IN ('10101', '10063'), 'My text', '');

UPDATE ${DB_PREFIX}product SET oct_stickers = IF(product_id = ${productId} AND option_id IN ('10101', '10063'), 'My text', '');

  • Спасибо за ответ! Но не работает.
    Походу я ошибся при описании проблемы...

    Имеем две таблицы:
    product
    option_my_value

    Нужно чтобы запрос
    нашел в таблице option_my_value два значения в столбце option_id
    '10101', '10063' по product_id = 1
    Он найдет две строки с product_id

    Если он нашел этих два значения, тогда в таблице product нужно записать в столбец oct_stickers мой текст который имеет product_id = 1

  • Dmax99, нет, это, видимо, я был невнимателен при прочтении.
    Ну, тогда подзапрос:
    UPDATE ${DB_PREFIX}product SET oct_stickers =    IF(product_id IN (     SELECT product_id FROM option_my_value      WHERE option_id IN ('10101', '10063')      GROUP BY product_id      HAVING COUNT(*) = 2   ),    'My text',    '' );

    UPDATE ${DB_PREFIX}product SET oct_stickers = IF(product_id IN ( SELECT product_id FROM option_my_value WHERE option_id IN ('10101', '10063') GROUP BY product_id HAVING COUNT(*) = 2 ), 'My text', '' );

  • Adamos, мне пишет такую ошибку
    Операнд должен содержать 1 колонок
  • Dmax99, проверьте текущую редакцию, а не то, что вам пришло по почте. Я внес несколько правок.
  • Adamos, Класс, работает) Нужно учить)))
    Большое вам спасибо!)
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Для записи данных в базу данных с использованием языка программирования PHP существует несколько способов. Один из наиболее распространенных способов - использование SQL запросов с помощью расширения PDO (PHP Data Objects).

Вот пример того, как можно записать данные в базу данных с использованием PDO:

// Подключение к базе данных
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";
 
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // Установка режима ошибок PDO на исключения
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    // Подготовка SQL запроса
    $stmt = $conn->prepare("INSERT INTO table_name (column1, column2, column3) VALUES (:value1, :value2, :value3)");
 
    // Привязка параметров
    $stmt->bindParam(':value1', $value1);
    $stmt->bindParam(':value2', $value2);
    $stmt->bindParam(':value3', $value3);
 
    // Установка значений параметров
    $value1 = "значение1";
    $value2 = "значение2";
    $value3 = "значение3";
 
    // Выполнение запроса
    $stmt->execute();
 
    echo "Данные успешно записаны в базу данных";
} catch(PDOException $e) {
    echo "Ошибка: " . $e->getMessage();
}

// Подключение к базе данных $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "dbname"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // Установка режима ошибок PDO на исключения $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Подготовка SQL запроса $stmt = $conn->prepare("INSERT INTO table_name (column1, column2, column3) VALUES (:value1, :value2, :value3)"); // Привязка параметров $stmt->bindParam(':value1', $value1); $stmt->bindParam(':value2', $value2); $stmt->bindParam(':value3', $value3); // Установка значений параметров $value1 = "значение1"; $value2 = "значение2"; $value3 = "значение3"; // Выполнение запроса $stmt->execute(); echo "Данные успешно записаны в базу данных"; } catch(PDOException $e) { echo "Ошибка: " . $e->getMessage(); }

В данном примере мы подключаемся к базе данных, создаем подготовленный запрос для вставки данных в таблицу, привязываем параметры и устанавливаем значения для этих параметров. Затем мы выполняем запрос и выводим сообщение об успешной записи данных или об ошибке при возникновении исключения.

Важно помнить, что при работе с данными извне (например, с данными, полученными от пользователя) необходимо проводить проверку на безопасность и защиту от SQL инъекций для предотвращения уязвимостей.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно