2016-01-02 97 views
0

我有一個小問題,我需要解決。在我的數據庫中,用戶具有名稱表,字段類似於:userID:1/Name:firstname/Lastname:lastname。我有一個字符串文件,我需要驗證,字符串是:「姓氏,名字」我如何驗證,該字符串包含兩個項目?檢查字符串是否包含2個值

我試圖:

$fullname = $data[1]; 
      $showdata = $db->prepare("SELECT userID FROM users WHERE firstname LIKE '%$fullname%' AND lastname LIKE '%$fullname%'"); 
      $userioID = $rowas['userID']; 
      $showdata->execute(); 
      $rowas= $showdata->fetch(PDO::FETCH_ASSOC); 
      echo $userioID; 

編輯

數據庫: enter image description here

FILE enter image description here

更具體一點,Talandis,Justinas,In數據庫中的一個元素就像2個單元格。我如何驗證,文件中的字符串同時包含名字和姓氏?

EDIT 2

$fullname = $data[1]; 
      $showdata = $db->prepare("SELECT userID FROM users WHERE lastname + ',' + firstname LIKE '%$fullname%'"); 
      $showdata->execute(); 
      $rowas= $showdata->fetch(PDO::FETCH_ASSOC); 
      $userioID = $rowas['userID']; 
      echo $userioID; 

最後編輯:

$showdata = $db->prepare("SELECT userID FROM users WHERE lastname + ', ' + firstname LIKE '%$fullname%'"); - 增值空間 - 這是工作。

+0

你有沒有試着用正則表達式? – Maxime

+0

你能更具體嗎? – JustinasT

+0

你有兩個標記的數據庫引擎。請刪除不適當的。 –

回答

0

假設該文件中所有的字符串是相同的,因爲你貼,你可以得到這樣的所需的變量:

$parts=explode(";",$filestring); 
$names=explode(",",$parts[1]); 
$lastname=$names[0]; 
$firstname=$names[1]; 

然後你使用SQL:

$showdata = $db->prepare("SELECT userID FROM users WHERE firstname LIKE '%$firstname%' AND lastname LIKE '%$lastname%'") 
+0

不工作。每個名字我都會得到「1」。 – JustinasT

+1

順便說一句,你注意到你沒有逃避那裏的參數?哦,我想你錯過了另一個爆炸。 – nonchip

+0

對。更正它 - 現在它應該工作。 – Johanness

0

假設$全名包含像那樣的「姓,名」preg_match(「/([a-zA-Z] ),([a-zA-Z])/」,$ fullname,$結果);

然後$結果應該是一個數組:
[
「姓,名」,
「姓氏」,
「名字」
]

很抱歉的格式,但我回答從我的手機。

順便說一句,你可以改善它由名稱,如讓 - 弗朗索瓦等

相關問題