Как взорвать входящие смс и вставить их в базу в php - PullRequest
0 голосов
/ 26 августа 2018

У меня есть входящий текст в этом формате:

POS;OS0101001;123456;ATAKUMOSA EAST;IWARA;TOWN HALL IWARA;755;650;50;10;10;10;15;245;5;Peacefully conducted ;2018-08-26 07:05:40

Что я хочу, так это взорвать текст примерно так:

$officer_id = $details[1];
    $userpassword = $details[2];
    $lga = $db->real_escape_string($details[3]);
    $ward = $db->real_escape_string($details[4]);
    $poll_unit = $db->real_escape_string($details[5]);
    $incident_type = $db->real_escape_string($details[6]);
    $incident_priority = $db->real_escape_string($details[7]);
    $incident = $db->real_escape_string($details[8]);
    $device_entry_date = $details[9];

Я действительно пытался взорвать его, но после разрыва я попытался вставить его в базу данных, но он вставлял пустые значения.

Что я пробовал до сих пор:

$dir   = strtolower(trim(preg_replace('/\s+/', ' ', substr(trim($_REQUEST['Body']),0,3))));
    $msg   = substr(trim($_REQUEST['Body']),0,3);
    if($dir == 'inc'){
                    onIncidentReport($phone,$date,$msg);
        }

Чтобы вставить в базу данных, у меня есть это:

function onIncidentReport($phone,$date,$msg){
   global $db;


       $split  =  explode(";", $msg);
       $details =  strtoupper($split[count($split)-1]);

        $officer_id = $details[1];
        $userpassword = $details[2];
        $lga = $db->real_escape_string($details[3]);
        $ward = $db->real_escape_string($details[4]);
        $poll_unit = $db->real_escape_string($details[5]);
        $incident_type = $db->real_escape_string($details[6]);
        $incident_priority = $db->real_escape_string($details[7]);
        $incident = $db->real_escape_string($details[8]);
        $device_entry_date = $details[9];

       $sql  = "SELECT * FROM master where (phoneNo = '$phone') and regstatus = 1";
       $st   =  mysqli_query($db,$sql);
       $num  =  mysqli_num_rows($st);
       $PtaW =  mysqli_fetch_assoc($st);

        if($num==1){

          $sql   = "UPDATE master SET incmsg = '$incident', incstatus = '$incident_priority', incdate = '$date', 
                    incpriotise = '$incident_priority' where (phoneNo = '$phone' OR phonetwo = '$phone') and regstatus = 1";
          $st    =  mysqli_query($db,$sql);



          $sql   = "INSERT INTO incident 
                   (lgName,phoneNo,msg,status,date) 
                     VALUES ('$lga','$phone','$incident','$incident_priority','$date')";


          $Query = mysqli_query($db,$sql);

          if($st || $Query){
            ?>
             <Response>
               <Message>
                 SUCCESSFULLY SENT.
               </Message>
             </Response>
            <?php
          }
        }else {
          ?>
             <Response>
               <Message>
                 YOU ARE NOT AUTHORISE TO USE THIS SERVICE.
               </Message>
             </Response>
          <?php
        }
   }

Я перепробовал все, что мог. Сделал некоторые исследования в Интернете, но до сих пор не могу понять.

Пустые значения вставлялись в базу данных каждый раз, когда я пытался ее вставить.

1 Ответ

0 голосов
/ 26 августа 2018

strtoupper () возвращает объект String, а не массив.$split - это ваш массив строк, который вы должны использовать для переменных вашей БД.$details - это всего лишь один объект String, возвращаемый из strtoupper().

. Вам нужно перебрать $split, изменив его на верхний регистр:

foreach($split as &$value)
    $value = strtoupper($value);

, а затем использовать значения $splitу вас в БД переменные:

    $officer_id = $split[1];
    $userpassword = $split[2];
    $lga = $db->real_escape_string($split[3]);
    $ward = $db->real_escape_string($split[4]);
    //...etc
...