MYSQL - 只插入记录(如果它还不存在)?

时间:2014-09-24 01:14:31

标签: php mysql duplicate-removal

我是mysql的noobie ...但是我试图让它来检查基于serialkey和程序的重复记录。只有在尚未为该特定程序提交序列密钥时才能提交记录。每个程序允许1个唯一密钥。

num是每条记录的唯一编号

我提交的所有记录都正常工作,BESIDES这个重复检查。请记住,我希望允许多次提交密钥,但只能在PER程序中提交。

<?php
$title = "Product Key Submission";
$con=mysqli_connect("URL HERE","USER HIDDEN","PASS HIDDEN","DB");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$program = mysqli_real_escape_string($con, $_POST['program']);
$key = mysqli_real_escape_string($con, $_POST['serialkey']);
$time = time();
$registered = date('Y-m-d g:i:sa',$time);

if ($firstname == ""){
	echo "<h1>BLANK FIELD FOR NAME</h1>";
	mysqli_close($con);
}
else {
	//###################### CHECK IF RECORD EXISTS ######################
	$query = mysqli_query("SELECT count(*) AS 'num' FROM `product_keys` WHERE `program` = '$program' AND `serial_key` = '$key'");
	$num = mysqli_fetch_assoc($query);
	if ($num['num'] >= 1) {
		echo "You have reached your limit of key submissions.";
	}
	//###################### CHECK IF RECORD EXISTS ######################
	else {
			echo "THE KEY WILL BE SUBMITTED...";

1 个答案:

答案 0 :(得分:0)

您可以保留代码,但以下情况除外:

执行:

$query = mysqli_query($con,"SELECT...

问题是您没有与DB连接。


您可能还将错误报告的默认设置为关闭。

它应该抛出以下警告:

  

警告:mysqli_query()需要至少2个参数,1在......

中给出      

警告:mysqli_fetch_assoc()期望参数1为mysqli_result,在...中给出null;

意味着mysqli_query() expects at least 2 parameters正在寻找数据库连接,而第二条警告消息是因为它附带了第一个警告,并一直持续到它找到某种形式的成功来停止进程。

这就是为什么它会转到你的

else {
        echo "THE KEY WILL BE SUBMITTED...";

条件。

error reporting添加到文件的顶部,这将有助于在生产测试期间。

error_reporting(E_ALL);
ini_set('display_errors', 1);

以及or die(mysqli_error($con))mysqli_query()