Как правильно записать данные в базу?
Здравствуйте!
Не знаю как правильно записать данные в базу.
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, Класс, работает) Нужно учить)))
Большое вам спасибо!)
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для записи данных в базу данных с использованием языка программирования 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(); }
В данном примере мы подключаемся к базе данных, создаем подготовленный запрос для вставки данных в таблицу, привязываем параметры и устанавливаем значения для этих параметров. Затем мы выполняем запрос и выводим сообщение об успешной записи данных или об ошибке при возникновении исключения.
Важно помнить, что при работе с данными извне (например, с данными, полученными от пользователя) необходимо проводить проверку на безопасность и защиту от SQL инъекций для предотвращения уязвимостей.