如果我已经有了与mysql数据库中完全相同的数据的记录,我不想让php代码再次输入它。
我使用的代码是当从php输入时防止mysql数据库中的数据重复
mysql_query(" ALTER TABLE tablename ADD UNIQUE INDEX(pageid, name) INSERT IGNORE INTO `tablename`
VALUES ('2','3','4'));
它似乎没有工作。问题是什么。
如果我已经有了与mysql数据库中完全相同的数据的记录,我不想让php代码再次输入它。
我使用的代码是当从php输入时防止mysql数据库中的数据重复
mysql_query(" ALTER TABLE tablename ADD UNIQUE INDEX(pageid, name) INSERT IGNORE INTO `tablename`
VALUES ('2','3','4'));
它似乎没有工作。问题是什么。
执行从MySQL这个查询,并首次创建索引。
ALTER TABLE tablename ADD UNIQUE INDEX(pageid, name);
然后,你可以因为在MySQL 没有一个CREATE INDEX IF NOT EXISTS
他建议从PHP
mysql_query("INSERT IGNORE INTO `tablename` VALUES ('2','3','4')");
a)您需要查询之间的分号 B)的mysql_query不支持多个查询 C)的mysql_query有语法错误,应该是mysql_query(" ALTER TABLE tablename ADD UNIQUE INDEX(pageid, name) INSERT IGNORE INTO
表名VALUES ('2','3','4')");
那我该怎么做呢。 – user1092042 2012-03-27 09:29:22
执行'ALTER TABLE tablename ADD UNIQUE INDEX(pageid,name)''然后使用'mysql_query(“INSERT IGNORE INTO tablename VALUES('2','3','4')”);'在脚本中 – dotoree 2012-03-27 09:36:09
谢谢。这工作 – user1092042 2012-03-27 09:48:19
检查从大卫·奥布莱恩的评论HERE执行插入查询...
基本上使用这种程序:
DELIMITER $$
DROP PROCEDURE IF EXISTS `create_index_if_not_exists`$$
CREATE DEFINER=`user`@`%` PROCEDURE `create_index_if_not_exists`(table_name_vc varchar(50), index_name_vc varchar(50), field_list_vc varchar(200))
SQL SECURITY INVOKER
BEGIN
set @Index_cnt = (
select count(1) cnt
FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = table_name_vc
and index_name = index_name_vc
);
IF ifnull(@Index_cnt,0) = 0 THEN set @index_sql = concat('Alter table ',table_name_vc,' ADD INDEX ',index_name_vc,'(',field_list_vc,');');
PREPARE stmt FROM @index_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END$$
DELIMITER ;
然后调用它像
call create_index_if_not_exists('tablename','indexname','thisfield,thatfield');
你可以做类似这样的:
$specifieddata = //the value(s) you want to check
$checkquery = "SELECT * FROM tablename WHERE yourdata = $specifieddata";
$resultcheck = mysql_query($checkquery);
//if the database contains the same values as given in $specifieddata; mysql_fetch_row should be 1 (or more)
if(mysql_fetch_row($resultcheck) >= 1)
{
//your error(?) code
}
else
{
//your INSERT code
}
此外,注意到你要净化你的输入
的原因,它可能是值得我建议这样做是因为你可以给用户一个(如果你想要详细的)关于错误的错误。
谢谢。有效。 – user1092042 2012-03-27 09:48:55