簡體   English   中英

MYSQL-僅插入不存在的記錄嗎?

[英]MYSQL - Only insert record if it does not already exist?

我是mysql的noobie ...但是我正試圖讓它檢查基於serialkey和程序的重復記錄。 僅當尚未為該特定程序提交序列號時,才可以提交記錄。 PER程序允許使用1個唯一密鑰。

num是每個記錄的唯一編號

除此重復檢查外,我已使所有工作與提交的記錄一起正常工作。 記住,我希望密鑰可以多次提交,但每個程序只能提交一次。

 <?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('Ymd 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..."; 

您可以按原樣保留代碼,但以下情況除外:

做:

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

問題是您沒有與數據庫連接。


您也可能將錯誤報告的默認設置設為關閉。

它應該引發以下警告:

警告: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(E_ALL);
ini_set('display_errors', 1);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM