【问题标题】:Search mysql database before inserting data插入数据前搜索mysql数据库
【发布时间】:2012-09-16 17:48:25
【问题描述】:

我不能完全考虑如何使用 mysql 和 php 来做到这一点。基本上我希望能够将数据提交到 mysql 数据库中,但在插入之前,它会检查该条目是否已经存在。

$guid=$_POST['guid'];
$name=$_POST['name'];
//Username
$user="webhost";
//Password
$pass="*******";
//IP To Host
$ip="***********";
//Database
$db="dayz2";
//Table
$table="whitelist";

//Database Connection
$con=@mysql_connect("$ip", "$user", "$pass")
            or die(mysql_error());

//Select Database
$dbcon=@mysql_select_db($db, $con)
            or die(mysql_error());
$dupesql = "SELECT * FROM $table where (name = '$name' AND guid = '$guid')";

$duperaw = mysql_query($dupesql);

if (mysql_num_rows($duberaw) > 0) {
  echo "Entry Already Exists";
}
else {
//Query Data Into Whitelist Table
$sql="INSERT INTO $table (name, guid) VALUES ('$name', '$guid')";

//Submit Data into Whitelist Table
$result=@mysql_query($sql, $con) or die(mysql_error());
}
?>

【问题讨论】:

  • 如果记录已经存在怎么办?没有什么?返回错误?增加一个计数器?还有什么?请在您的问题中包含相关信息。
  • 你想检查什么?
  • 您可能应该为您的数据定义唯一约束,并在尝试插入后检查错误1062(“重复条目”)。
  • 我已将我的帖子更新为我尝试使用的 php 脚本,但它不显示错误并停止提交

标签: php mysql html forms


【解决方案1】:

你可以用另一种方式来代替:

提交数据到mysql数据库,但在插入之前,它会 检查该条目是否已存在。

你可以这样做:

如果不存在,则将数据插入到mysql数据库中,否则忽略它们

类似:

INSERT IGNORE INTO table
INSERT IGNORE INTO yourtablename
SET fieldname = 'blah'
,..

【讨论】:

    【解决方案2】:

    这取决于您要做什么 - 您的查询的确切标准是什么?

    您有多种选择:

    【讨论】:

      【解决方案3】:

      当条目存在时,这取决于您希望如何处理大小写。 如果您想抛出一些错误,那么您可以为插入事件创建表触发器并在那里进行一些检查,但这会很慢,因为每个插入都会执行此检查。

      【讨论】:

        猜你喜欢
        • 2014-06-02
        • 1970-01-01
        • 2016-03-25
        • 2014-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        相关资源
        最近更新 更多