mysql資料庫防重複提交,防止數據重複提交

本文目錄一覽:

mysql 插入數據如何防止重複

如果表中包含有一個自動遞增欄位AUTO_INCREMENT,並用 INSERT … UPDATE 插入一行,函數 LAST_INSERT_ID()會返回AUTO_INCREMENT的值,如果這個語句更新某一行, LAST_INSERT_ID() 就沒有意義了。但是,你可以通過用 LAST_INSERT_ID(expr)使它變得有意義,假如id欄位是自動遞增欄的話,使 LAST_INSERT_ID() 對更新語句有意義的方法如下:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;

ON DUPLICATE KEY UPDATE命令語句,那麼在唯一索引或者主索引的作用下將不插入與資料庫教程記錄重複的內容,但同時會更新資料庫中的舊記錄。例如,欄位a被聲明為唯一索引並且裡面只包含有值為1的記錄,以下兩個語句會達到同樣的效果:一、INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;二、UPDATE table SET c=c+1 WHERE a=1;可以在插入更新語句 INSERT … UPDATE 中使用 VALUES(欄位名) 函數去關聯某一行記錄。也就是說, VALUES(欄位名) 可以用在UPDATE語句中去更新某欄位的值而不會出現重複鍵。這個函數在多行插入中尤其有用。但是函數 VALUES() 僅當用在 INSERT … UPDATE 語句中才有意義,否則會返回NULL。例如:INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

其它方法insert into songinfo(songname,songtime,songpath) select ‘aaa’,’bb’ ,’cc’ from dual where not exists(select * from songinfo where songname=’123′)//上述命令在MYSQL3.x版本上不能執行,5.0.24的可以

比如我的Mysql當中某database存在url這張表,現在要有C API 將url,url_hash,domain這三個變數的值插入到資料庫中,url_hash是主鍵,本來為了不至插入重複項,應該判斷一下的,現在只要這一條SQL語句就行了,什麼都不要管,減少了大量的查詢和判斷工作,我只能說一句:太爽了。如下:SQL語句:

insert into TABLE(FIELD0,FIELD1…) select VALUE0,VALUE1 ,… from dual where not exists(select * from TABLE where FIELDN=VALUEN)代碼:

int store_url(char *url)

{

char *key, url_hash[HASHLEN], domain[DOMAINLEN], sqlstr[SQLSTRLEN];……sprintf (sqlstr, “insert into url(url,url_hash,domain) select ‘%s’,’%s’,’%s’ from dual where not exists(select * from url where url_hash=’%s’) “, url, url_hash, domain, url_hash);

if (mysql_query (conn, sqlstr)) //大部分情況下失敗是由於資料庫關閉,所以可以在以下添加上再連接MySQL的代碼,不贅寫!

{ printf (“Error:%sn”, mysql_error (conn));

return;

}

}最後有一種比較簡單的方法就是先查詢當前的數據在資料庫是否有相同的,如果有的話就提示如

*/

$title =”;

$sql = “Select * from tablename where title=’$title'”;

$query = mysql_query( $sql );

if( mysql_num_rows( $query ) )

{

exit(‘不能重複插入相同的記錄’);

}

else

{

$sql =”insert tablename values(‘$title’)”;

mysql_query( $sql );

exit(‘保存記錄成功’);

}

//這種方的不好之處在於多次查詢了資料庫,並且代碼也冗餘了,好了到底你用那排除重複數據的方法你自己根據自己的情況而定吧。

mysql怎麼防止多次上傳同樣數據

資料庫欄位設置唯一 後台增加驗證,驗證傳過來的數據是否和資料庫重複

有沒有簡單的方法防止網頁刷新等導致數據重複提交到資料庫,求詳細代碼,謝謝!!!

防止網頁刷新導致數據重複提交,可以在表單中添加Token令牌機制,這即保證了安全性(防CSRF攻擊),又能夠驗證重複提交,每次生成表單頁面時,會生成一個Token,在每次提交數據時,都要求檢查Token,通過token檢驗合法的請求,可以多去看看實戰教程。

原創文章,作者:JSNO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/149012.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JSNO的頭像JSNO
上一篇 2024-11-04 17:49
下一篇 2024-11-04 17:49

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29

發表回復

登錄後才能評論