Добрый день. Подскажите начинающему шаману как реализовать следующее.
Я делаю парсинг определенный контент и делю его на 4 части (id, theme, description, time). С тремя последними параметрами понятно и просто. Но, на данный момент у меня запись в базу данных организована плохо. Дословно:
<?php
$i=$i+1;
echo $el->title . PHP_EOL;
echo "<br>";
echo $el->description . PHP_EOL . PHP_EOL;
echo "<br> <hr>";
mysqli_query($link, "INSERT INTO cont SET typeid='".$i."', theme='".$el->title . ' ' . $el->description."', times=NOW()");
?>
В общем получается при каждом использовании данного кода я, во первых не перезаписываю данные (это не сложно сделать, но не разумно), а во вторых каждый раз копирую одинаковые данные, что мне не нужно.
В голове понимаю что нужно простенькое сравнение по id например. Но как в итерации сделать это не совсем понимаю.
Спасибо за советы!)
Шаг 1. Определитесь, исходя из своей задачи, какое поле является первичным ключем у этой таблицы. Заумная теория здесь. По-простому: первичный ключ - это значение, по которому можно точно определить строку, и другой такой в рамках таблицы больше нет и быть не может. Пример: номера квартир в одном подъезде, номера домов на одной улице, номер билета на трамвай в одном тираже. Человека определить однозначно сложнее - имена повторяются, полное ФИО повторяется, но например в рамках РФ для налоговой у нас есть ИНН, у каждого - свой.
Шаг 2. Проверьте, соответствует ли формат вашей таблицы SQL вашему представлению об этой этой таблице. По простому - верно ли она создана, указан ли первичный ключ (PRIMARY KEY), и есть ли у таблицы автоинкрементируемое поле.
Например, ваша таблица может выглядеть примерно так:
--
-- Структура таблицы `cont`
--
CREATE TABLE IF NOT EXISTS `cont` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`typeid` int(11) NOT NULL,
`theme` text NOT NULL,
`times` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Смотреть/править можно в консоли, но мне (и не только) больше нравится phpMyAdmin. Делать times
обновляемым при каждом UPDATE не обязательно, это по умолчанию так вбито было ) не стал убирать, вдруг пригодится вам.
Обратите внимание на две вещи:
id
AUTO_INCREMENT - это значит, что при INSERT без указания явного значения для id
он просто будет взят +1 от последнегоid
) - а это значит, что в рамках этой таблицы не может быть двух строк с одинаковыми значениями id
Шаг 3. Определитесь, в вашей итерации должна происходить всегда вставка INSERT новой строки в таблицу, или в некоторых случаях нужно делать UPDATE. Если всегда вставка - продолжайте делать только вставку. Если в некоторых случаях нужно обновить данные - делайте последовательно SELECT нужной записи по каким-то критериям, а затем если запись нашлась - делайте UPDATE с WHERE id
нужной записи, обновляя именно ее, родимую
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени суток! Использую СУБД MySQL в связке с PhpMyAdmin, при создании связей между таблицами появился вопрос: "Можно ли получить количество...
нужно,что бы добавлялись новые id продукта у определенного пользователя