如何檢查數據庫中是否存在重複條目?我不想阻止它,只是一個警告。所以如果它已經存在,它只是給出一個警告,取決於用戶是否忽略它。
在此先感謝!PHP MySQL檢查重複條目?
回答
$key_id = 123;
$result = mysql_query("SELECT * FROM table WHERE key_id='$key_id'");
$num_rows = mysql_num_rows($result);
if ($num_rows) {
trigger_error('It exists.', E_USER_WARNING);
}
謝謝!這很簡單,呵呵。如果我理解正確,它會檢查'$ result'是否爲true/not-null,對嗎? – 2011-03-21 13:54:01
實際上它檢查'$ result'內的行數。如果它不是零,那麼你有一個副本。 – Saul 2011-03-21 14:00:53
我使用:'if($ result)'而不是num_rows來檢查$ result是否爲true,是保存嗎? – 2011-03-21 14:01:50
另一種選擇是使用SELECT COUNT()查詢它會告訴你複製數量,而不是隻檢查任何行返回的。
SELECT COUNT(*) FROM table WHERE field = '$field'
如果使用NUM行的方法,這將是更有效的,如果你不選擇,當你不打算使用它們所有領域 - 不要讓MySQL的引擎的工作比更難它需要。
我做了一個友好的方式來處理重複的東西像用戶ID。例如,如果用戶輸入一個id約翰並且該ID已經存在,它將自動更改爲john1。如果john1存在,它會自動變爲john2等
// Force the while statement to execute once
$usercount = 1;
// The number to append to the duplicate value
$incrementcount = 0;
// Store the original value
$origuserid = $userid;
while ($usercount != 0) { // Query the database for the current ID
$query = "SELECT COUNT(*) FROM userlist WHERE userid = '$userid'";
if ($stmt = $con->prepare($query)) {
$stmt->execute();
$stmt->close();
$stmt->bind_result($usercount);
$stmt->fetch();
} else {
die('Query error');
}
if ($usercount != 0) {
// if count is anything other than zero, it's a duplicate entry
$incrementcount++; // value to append
$userid = $origuserid . $incrementcount; // append value to original user id
// the while loop will execute again and keep incrementing the value appended
// to the ID until the value is unique
}
}
歡迎來到SO,希望發佈。 ;) – vdbuilder 2012-11-02 18:53:22
我意識到這是一個老帖子,但我有錯誤,與選定的答案,因爲它總是會返回true,當它是假的,精確複製從上面的答案,所以我寫了一個微小的變化。
function checkValid($ipCheck){
$con=mysqli_connect("localhost","******","******","$DB_NAME");
$result = mysqli_query($con,"SELECT * FROM $TBL_NAME");
$end = true;
while($row = mysqli_fetch_array($result) && $end)
{
if(strcmp($row['IP'],$ipCheck) == 0)
$end = false;
}
return $end;
}
這個做什麼,是掃描所有,直到它到達虛假陳述。如果不是,那麼它將保持爲真,意味着沒有重複,繼續前進,否則,它會發現重複並返回false,並觸發counter語句。
那麼假設我試圖知識產權的從我的數據庫進行比較,該列是IP:
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
if(checkValid($ip)){
$sql = "INSERT INTO $TBL_NAME (IP) VALUES ('$ip')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
}
else
echo "IP Already Exists In Database";
我非常新到PHP,但是這工作得很好,我的目的,並且不加載頁面時似乎會影響我的速度。
- 1. PHP MYSQL檢查重複條目
- 2. 檢查MySQL的重複條目
- 3. PHP和MySQL - 檢測重複條目
- 4. PHP重複名稱檢查條目
- 5. 重複條目檢查
- 6. PHP/MySQL - 更新重複條目的行
- 7. MySQL的重複條目與PHP
- 8. php - 重複條目
- 9. MySQL查詢返回重複條目
- 10. MySQL查詢 - 避免重複條目
- 11. C#/ SQL檢查重複條目
- 12. MySQL檢查一對多關係中的重複條目
- 13. MySQL的更好的方法來檢查重複條目
- 14. 檢查varchar值並避免MySQL表中的重複條目
- 15. 檢查重複項,PHP和MySQL
- 16. PHP MySQL重複值檢查器
- 17. MySQL GROUP_CONCAT重複條目
- 18. MySQL接收重複條目
- 19. 使用php檢查重複的電子郵件條目
- 20. PHP檢查重複數組中的條目
- 21. Mysql條目包含檢查
- 22. 重複條目JOIN查詢
- 23. 檢查重複的MySQL行
- 24. 如何在從Coldfusion導入MySQL時檢查MySQL中的重複條目?
- 25. 修復mysql表中的重複條目
- 26. MySQL數據庫條目重複
- 27. 重複mysql中的INSERT條目
- 28. MySQL - 跳過重複的WordPress條目
- 29. 防止重複條目的mysql
- 30. 檢查重複項目
有點困惑,你是否試圖查看記錄是否存在比不運行插入命令,或者你想通過在mysql中使用鍵和其他約束來防止重複條目? – Incognito 2011-03-21 13:46:17
更好地使用['UNIQUE' constraint](http://dev.mysql.com/doc/refman/5.5/en/create-table.html)禁止重複值:「一個'UNIQUE'索引創建一個約束索引中的所有值必須是不同的。如果嘗試使用與現有行匹配的鍵值添加新行,則會發生錯誤。對於所有引擎,'UNIQUE'索引允許多個'NULL'值可以包含NULL的列。「 – Gumbo 2011-03-21 13:46:50
不,我只是想檢查一下,如果它已經存在,它會發出警告,用戶可以忽略它,但可以也取消它。 – 2011-03-21 13:47:29