我是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...";
答案 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()
。