PHP/MySQL检查值是否存在,如果存在,请不要插入它

PHP/MySQL检查值是否存在,如果存在,请不要插入它,php,mysql,Php,Mysql,我以前问过这个问题,但想不出来 我有以下表格: <?php if ( isset ($_REQUEST['fname']{0}, $_REQUEST['lname']{0}, $_REQUEST['mail']{0}, $_REQUEST['url']{0}) ){ $query = "INSERT INTO table1 (url, fname, lname, mail) VALUES ('".$_REQUEST[url]."', '".$_REQUEST[fname]."', '

我以前问过这个问题,但想不出来

我有以下表格:

<?php
if ( isset ($_REQUEST['fname']{0}, $_REQUEST['lname']{0}, $_REQUEST['mail']{0}, $_REQUEST['url']{0}) ){
   $query = "INSERT INTO table1 (url, fname, lname, mail) VALUES ('".$_REQUEST[url]."', '".$_REQUEST[fname]."', '".$_REQUEST[lname]."', '".$_REQUEST[mail]."')"; 
$result = mysql_query($query)
or die ("Query Failed: " . mysql_error());
}
else{
   echo "One Of The Values Not Entered Correctly. Please Press Back In Your Browser And Enter The Missing Values.";
}
?>
查看MySQL,如果您在数据库中将URL设置为唯一,则可以使用MySQL

此外,您应该确保在插入输入之前对其进行清理:

检查MySQL,如果您在数据库中将URL设置为唯一,则可以使用MySQL


此外,您应该确保在插入输入之前对其进行清理:

确保数据库中的url列是主列或唯一列

ALTER TABLE  `table1` ADD PRIMARY KEY(`url`);
在使用此插入函数之前,必须添加mysql\u connect()、mysql\u select\u db()
确保数据库中的url列是主列或唯一列

ALTER TABLE  `table1` ADD PRIMARY KEY(`url`);
在使用此插入函数之前,必须添加mysql\u connect()、mysql\u select\u db()
如果url列上确实有
唯一
主键
索引,
INSERT IGNORE
将执行您想要的操作。新行将进入,重复行将被忽略<代码>插入。。。在重复密钥更新时
将允许您更新是否存在重复密钥,如果这是您想要执行的操作。另外,请注意这里其他人的SQL注入注释

如果url列上确实有
唯一
主键
索引,
插入忽略
将执行您想要的操作。新行将进入,重复行将被忽略<代码>插入。。。在重复密钥更新时将允许您更新是否存在重复密钥,如果这是您想要执行的操作。另外,请注意这里其他人的SQL注入注释

根据OP和后续注释中的描述(如果存在,请尝试插入,抛出错误),我只需确保所需的“唯一”列具有唯一约束或是主键的一部分

然后,只需尝试插入并捕获/处理任何唯一的约束冲突错误。这比检查现有记录要快


在错误模式设置为抛出异常的情况下使用PDO意味着您可以将此代码很好地包装在try-catch块中。从内存中,唯一约束冲突将异常代码设置为您可以测试的代码。

根据OP和后续注释中的描述(尝试插入,如果存在抛出错误),我只需确保所需的“唯一”列具有唯一约束或是主键的一部分

然后,只需尝试插入并捕获/处理任何唯一的约束冲突错误。这比检查现有记录要快


在错误模式设置为抛出异常的情况下使用PDO意味着您可以将此代码很好地包装在try-catch块中。从内存中,唯一的约束冲突将异常代码设置为您可以测试的代码。

Replace正是您所需要的


REPLACE的工作原理与INSERT完全相同,只是如果表中的旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前删除旧行


REPLACE的工作原理与INSERT完全相同,不同之处在于,如果表中的一个旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前,使用SQL query删除旧行

Yes。你知道如何运行查询吗?我确实知道:$query=“query”$result=mysql\u query($query)或die(“查询失败:”.mysql\u error());问题是:我如何检查它是否存在?如果它确实存在,你希望发生什么?这不是一种知识,而是一种复制/粘贴,但无论如何。那么,运行一个SELECT查询,看看它是否会返回任何内容。弹片你是那种让人不想进入这个世界的人。复制别人的代码、理解它的功能并将其用于自己的目的有什么不对?是的,使用SQL查询。你知道如何运行查询吗?我确实知道:$query=“query”$result=mysql\u query($query)或die(“查询失败:”.mysql\u error());问题是:我如何检查它是否存在?如果它确实存在,你希望发生什么?这不是一种知识,而是一种复制/粘贴,但无论如何。那么,运行一个SELECT查询,看看它是否会返回任何内容。弹片你是那种让人不想进入这个世界的人。复制别人的代码、理解它的功能并将其用于自己的目的有什么不对?