2016-05-30 34 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']) {