2013-07-09 118 views
0

我試圖向服務器發送一串數字並拆分每個數字。如果數據庫中存在數字,則分配「t」值,如果不存在,則分配「f」值。 但由於某種原因,我只得到t的。如何檢查服務器上是否存在數據PHP

<?php 
# get phone from uid 
include_once 'utils.php'; 

$phone = $_GET['phone'] or die("isRegistered: missing phone"); 
$response = ""; 
$phonearray = explode(":", $phone); 


for ($i = 0; $i<sizeof($phonearray); $i++){ 

    $result = findRow("phone", $phonearray[i], "user_device") or "true" ; 

    if($result == "true") 
    { 
     $response = $response."t".":"; 
     $result = ""; 
    } 
    else 
    { 
     $response = $response."f".":"; 
     $result = ""; 
    } 

} 

die($response); 

?> 
+6

您的if和else條件都將$ response設置爲t。 –

+0

對不起,這是一個錯字。 – nishantvodoo

回答

3

實際上這裏有幾個問題。

  1. 正如在其他的答案中提到,你錯誤地使用你的代碼的兩個分支't'

  2. 您似乎正在使用字符串"true"而不是布爾值true。雖然它可能因爲PHP在類型之間轉換值的方式而起作用,但實際上您可能打算使用true,而使用該字符串可能會導致以後出現意外的行爲。

  3. 我不知道是什麼findRow()的做法,但通過添加or true(甚至or "true"),以它的結束,$result總是true

  4. 您正在使用i來引用$phonearray而不是$ii將生成PHP警告,並將被解釋爲"i" - 而不是$i變量的值。

如果你看看你的這部分代碼:

$result = findRow("phone", $phonearray[i], "user_device") or "true" ; 

if($result == "true") 
{ 
    $response = $response."t".":"; 
    $result = ""; 
} 
else 
{ 
    $response = $response."t".":"; 
    $result = ""; 
} 

你會重寫它像這樣取得更好的成績:

$result = findRow("phone", $phonearray[$i], "user_device"); 
$response .= ($result ? 't' : 'f') . ':'; 

我猜有點作爲到findRow()做什麼,因爲你沒有包括任何有關它 - 但我假設它只是返回一個真/假值。

您會注意到我還使用ternary operator將整個if/else語句簡化爲幾行。

+0

問題是findrow()會去檢查數據庫中是否存在電話號碼。如果它返回,則返回該表數據的數組。現在我只是想區分數據庫中是否存在這個數字。如果它確實那麼我想給它分配一個「t」值,如果它不分配一個「f」值....但由於某種原因,它會給出所有的真實或全部假 – nishantvodoo

+0

問題是如此愚蠢。 $ phonearray [我]應該是$ phonearray [$我] ...感謝您的幫助。我當然學到了一些東西。 – nishantvodoo

+1

@nishan_vodoo哎呀 - 我錯過了那一個。我已經更新了我的答案以包含該修復(以備將來參考)。 – jcsanyi

1
if($result == "true") 
{ 
$response = $response."t".":"; 
$result = ""; 
} 
else 
{ 
$response = $response."t".":"; 
$result = ""; 
} 

改變這部分

if($result == "true") 
{ 
$response = $response."t".":"; 
$result = ""; 
} 
else 
{ 
$response = $response."f".":"; 
$result = ""; 
} 
+1

這並沒有解決'$ result'將始終爲'true'的事實。 – jcsanyi

0

你設置了 「T」 因爲如果和其他條件都。

,並做檢查

if(isset($_GET['phone'])) 
+2

這並沒有解決'$ result'將始終爲'true'的事實。 – jcsanyi

0
if($result == "true") 
{ 
$response = $response."t".":"; 
$result = ""; 
} 
else 
{ 
$response = $response."t".":"; 
$result = ""; 
} 

改變這部分

if($result == 'true') 
{ 
$response = $response.'t:'; 
$result = ''; 
} 
else 
{ 
$response = $response.'f:'; 
$result = ''; 
} 
+1

http:// stackoverflow。com/a/17540362/398242 –

+0

@WesleyMurch檢查區別。 – Lenin

+0

aha做得很好隊友 –

相關問題