簡體   English   中英

檢查用戶以html格式輸入的數據是否已經存在於php的數據庫中

[英]Check if data entered by user in html form already exists in database in php

在單擊按鈕以在數據庫中添加數據的同時以html形式輸入數據后,我要檢查用戶是否已存在於數據庫中。 我正在使用php v5.3.5和mysql v5.5.8。 數據存儲在同時命名為person和other的2個表中,並且沒有主鍵(在兩列中),因為沒有可被視為主鍵的列。任何人都可以幫助我做到這一點嗎?

代碼是:

$sqlComm="Insert into person(Name,father_name,date_birth,
gender,Res_Address,Mobile_no)
  values('$name','$fatherName','$dob',
 '$gender1','$resAddress','$mobileNo')";
$sql="insert into other_staff(p_id,employer,off_ph_no) 
      values('$pId','$employer1','$phOffice')";

系統會自動為每個人生成一個id,並將其作為p_id存儲在其他表中。 姓名,父親姓名,出生日期,雇主的組合可以唯一。

似乎沒有建議的字段可以是主鍵,它們中的任何一個或它們的組合都不能唯一地標識一個人。 這是一個非常奇怪的數據庫設計,我敦促您檢查您的數據庫設計。

您將必須通過執行單獨的選擇查詢來查找用戶是否存在。 另外,請確保兩個語句都在事務內執行。

您將不得不考慮什么使人對於您的模式/應用程序來說是唯一的。 更改手機號碼可能不會使一個人成為新人,但是如果我們共享姓名,父親名稱,日期出生和性別,我是否與現有人相同? 如果是這樣,請將該鍵設置為唯一鍵,數據庫就會告訴您該鍵已經存在。 以防萬一您還不知道:鍵可以跨越多列。

盡管存在不良的架構,我們可以找到一種方法(如下所示)來檢查用戶是否存在。 但是我想您也想與特定用戶檢查第二張表那是否有雇主。 然后這是您的數據庫中的問題,因為PERSON OTHER_STAFF的表中沒有列可以告訴我們PERSON表中特定用戶特定雇主

解決方案:但是對於這種情況,您可以使用交叉聯接來獲得幾乎正確的結果:

    if($result=mysql_query("SELECT 1 FROM person p CROSS JOIN other_staff e WHERE p.name='$name' AND p.father_name='$father_name' AND p.date_birth='$dob' AND p.gender='$gender1' AND p.Res_Address='$resAddress' AND p.Mobile_no='$mobileNo' AND e.employer='$employer1' AND e.off_ph_no='$phOff';")){
           if(mysql_fetch_array($result)){
              //exist
           }else{
             //not exist
           }
    }

建議:下次將自動生成的ID存儲在該項目的 PERSON和OTHER STAFF表中-如果您可以將p_id存儲在PERSON表中,則此查詢將在存在時返回1,否則返回null(與上述相同):

     $sql="SELECT 1 FROM person p LEFT JOIN other_staff e ON p.p_id=e.p_id WHERE p.name='$name' AND p.father_name='$father_name' AND p.date_birth='$dob' AND p.gender='$gender1' AND p.Res_Address='$resAddress' AND p.Mobile_no='$mobileNo' AND e.employer='$employer1' AND e.off_ph_no='$phOff';";

暫無
暫無

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

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