1
我想知道如何使用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)
);
岂不是更好只需检查标签名称是否与第一个表格中的其他标签名称相匹配? – 2009-12-03 03:20:57
需要更长的时间来检查VARCHAR,然后它确实检查INT ...如果您的数据库增长检查每个名称将花费更长,更长的时间返回结果...最好像dnagirl一样实现建议。 – luckykind 2009-12-03 03:31:24
但是当用户提交标签时,我不会不知哪个标签属于哪个标识。我如何解决这个问题。 – 2009-12-03 03:36:11