Мне было интересно, как я могу обновить две таблицы базы данных с помощью PHP и MySQL? Я хочу добавить вторую таблицу с именем tags_2, которая проверит, существует ли тег уже и добавляет ли он текущий счет в таблице, и если тег не существует, добавьте его в таблицу.PHP/MySQL как вставлять и/или обновлять две таблицы MySQL?
Надеюсь, я объяснил это правильно?
Мне в основном нужна помощь в добавлении правильного кода в нужные места, это почему-то затормозило меня весь день? У меня первая таблица работает, но не вторая?
Ниже приведены мои таблицы MySQL ниже.
CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
page TEXT NOT NULL,
tag VARCHAR(255) NOT NULL,
count INT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tags_2 (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tag VARCHAR(255) NOT NULL,
count INT NOT NULL,
PRIMARY KEY (id)
);
И вот мой PHP-скрипт ниже.
<?php
require_once ('./mysqli_connect.php');
if (isset($_POST['submitted'])){
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT * FROM tags");
if (!$dbc) {
print mysqli_error($mysqli);
}
$page = $_SERVER['SCRIPT_FILENAME'];
$tag = mysqli_real_escape_string($mysqli, $_POST['tag']);
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"SELECT id, count, page FROM tags WHERE tag='$tag' AND page = '$page'");
if(mysqli_num_rows($dbc)){
$tag_info = mysqli_fetch_array($dbc);
$tag_info_id = $tag_info["id"];
$tag_info_count = $tag_info["count"] + 1;
$mysqli = new mysqli("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"UPDATE tags SET count='$tag_info_count' WHERE id='$tag_info_id'");
echo "$tag now with $tag_info_count instances";
} else {
$mysqli = new mysqli("localhost", "root", "", "sitename");
$clean_url = mysqli_real_escape_string($mysqli, $page);
$dbc = mysqli_query($mysqli,"INSERT INTO tags (tag, count, page) VALUES ('$tag', 1, '$clean_url')");
if (!$dbc) {
print mysqli_error($mysqli);
}
echo "1 record added";
}
mysqli_close($mysqli);
}
?>
Будут ли таблицы выглядеть лучше.
CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
page TEXT NOT NULL,
tag VARCHAR(255) NOT NULL,
count INT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tags_2 (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tag_id INT UNSIGNED NOT NULL DEFAULT 0,
tag VARCHAR(255) NOT NULL,
count INT NOT NULL,
PRIMARY KEY (id)
);
не было бы лучше, если бы я просто проверьте, совпадает ли имя тега с другим именем тега в первой таблице? –
позволяет mysql дольше проверять VARCHAR, а затем проверять INT ... если ваша БД растет, проверяется, что каждое имя займет больше времени и больше, чтобы вернуть результат ... лучше всего реализовать, как предлагает dnagirl. – luckykind
, но я не буду указывать, какой тег принадлежит идентификатору, когда пользователи отправляют тег. Как я могу бороться с этой проблемой. –