2016-05-30 40 views
1

我試圖開關的情況下,用戶在聊天添加到ms_data['text']一些單詞,但其沒有工作,得到響應,如果文本插入

有人可以幫我解決嗎?

function RegisterMessage($ms_data = array()) { 
    global $wo, $sqlConnect; 
    if ($wo['loggedin'] == false) { 
     return false; 
    } 
    if (empty($ms_data)) { 
     return false; 
    } 
    if (empty($ms_data['text']) || !isset($ms_data['text']) || strlen($ms_data['text']) < 0) { 
     if (empty($ms_data['media']) || !isset($ms_data['media']) || strlen($ms_data['media']) < 0) { 
      return false; 
     } 
    } 

    if (isset($ms_data['text'])) { 
    switch ($ms_data['text']]) { 
     case '1': 
      echo "one"; 
      break; 
     case '2': 
      echo "two"; 
      break; 
     case '3': 
      echo "three"; 
      break; 
     } 
    } 

    $fields = '`' . implode('`, `', array_keys($ms_data)) . '`'; 
    $data = '\'' . implode('\', \'', $ms_data) . '\''; 
    $query = mysqli_query($sqlConnect, " INSERT INTO " . T_MESSAGES . " ({$fields}) VALUES ({$data})"); 
    if ($query) { 
     $message_id = mysqli_insert_id($sqlConnect); 
     return $message_id; 
    } else { 
     return false; 
    } 
} 
+0

有至少兩個不好的問題你的代碼:1)你使用全局變量(我們不知道這些全局變量是否已經被使用,你應該把變量傳遞給函數,你應該僅在小腳本中使用全局變量2)您應該將數據庫訪問封裝到一些類中,而不是原始的mysqli *查詢。 3)'strlen($ ms_data ['text'])<0)'什麼? strlen of anything can not be <0 4)學會使用var_dump($ variable)來調試一些東西 – strangeqargo

+0

@strangeqargo我已經刪除了部分代碼,聊天代碼上的所有內容都工作的很好,我只想添加例如,「案例」,如果用戶寫!幫助,他會收到回聲。謝謝你的回答 – filipe

+0

你不應該回應你想要替換的單詞。只需替換它們即可'$ ms_data = preg_replace('/ 1 \ b/i','one',$ ms_data);' – DarkBee

回答

1

你的開關不能正常工作,因爲你必須和額外的 ']':

取代:

switch ($ms_data['text']]) { 

由:

switch ($ms_data['text']) {