2017-04-26 54 views
0

(是的,標題應該是更容易理解,但老實說,我不知道如何設置它。)相同的代碼工作不同於數據庫加載數據,並使用本地數據

我所試圖做的是創造拉丁語在線字典。當你搜索一個詞的代碼(我使用了一些索引,所以不用擔心選擇性)將在一個字符串內逐行搜索該名稱(該字符串變爲使用爆炸的數組)。

我已經創建了一個名爲「測試」表只是使用此代碼的做法,但它在字典中的一個的方式是相同的:here the table

試圖加載從數據庫中的數據我檢查之前如果它在本地工作。它在本地工作。這裏的代碼:使用相同的代碼

$word_searched = 'puellam'; 

$string_declination = ('puella,puellae,puellae,puellam,puella,puella'); 
$array_declination = explode(",", $string_declination); 

$check = 0; 

foreach ($array_declinazion as $item) { 
    if ((strcmp($item, $word_searched)) === 0){ 
     $check++; 
    } 
} 

if ($check > 0) { 
    echo 'yes'; 
} 

然後我tryed從數據庫(表「測試」)加載數據。下面的代碼:

$query = "SELECT * FROM test"; 

$result = mysqli_query($conn, $query) or die('Error running query!'); 

$check = 0; 
$string = 'puellam'; 

while($row = $result->fetch_assoc()) { 
    $array_declinazione = explode(",", $row['declinazione']); 
    foreach ($array_declinazione as $item) { 
     if ((strcmp($item, $string)) === 0){ 
      $check++; 
     } 
    } 
} 


if ($check > 0) { 
    echo 'yes'; 
} 

第一個代碼工作完美,但儘管它以同樣的方式,第二個甚至沒有。我只是不明白爲什麼。

+0

你的第一個是行不通的,因爲在一個變量名中的類型;)現在都失業了的'$行[「declinazione」什麼樣的價值觀]'? – JNevill

+0

是的,當我在本地工作時,我使用其他名稱作爲變量,但之後我在發佈之前更改了它們,以使它們更容易理解。順便說一下,第一個代碼的作品(使用正確的名稱)。 $ row ['declinazione']是一個字符串,包含名稱的偏角(在這種情況下名字是puella)。這是一個單詞列表,它是名稱單一偏角的一部分(它們共有6個),它們之間用逗號分隔,因爲那時我使用函數explode來創建一個數組。 – Bobbe12

+1

數據庫中的行有空格,而你的字符串沒有。您可能需要在兩個字符串上都調用'trim'來比較前刪除前導/尾隨空白。 –

回答

0

我認爲你需要在第二個這是什麼:

$string = 'puellam'; 
// If there is a word that matches $string it will return the row 
$query = "SELECT * FROM test WHERE declinazione LIKE '%$string%'"; // demonstration purposes only. THIS IS VERY UNSAFE!!!! DO NOT USE IN PRODUCTION!!!! 

$result = mysqli_query($conn, $query; 

if ($result) { 
    $check = mysqli_num_rows($result); 

    if ($check > 0) { 
     echo 'yes'; 
    } 
} else { 
    die('Error running query! ' . mysqli_error($conn); // Throw errors if any - It's best to log it instead of "echoing" it 
} 
0

行中的數據庫中有空格,而你的字符串沒有。您可能需要在兩個字符串上都調用trim以在比較之前刪除前導/尾隨空白。

例如,改變strcmp

strcmp(trim($item), trim($string)) 
相關問題