Member 12949669 Ответов: 2

Как мне разлить строку на две переменные, чтобы вставить ее в mysql


Привет всем, на самом деле у меня есть следующие данные из приложения android в виде строки, и я преобразовал их в массив, и теперь я хочу вставить их в таблицу MySql с помощью php мои данные выглядят следующим образом:

Имя = Стив: Телефон=+0154155423, Имя = Джек: Телефон=+013935175713,Имя=Сара:Телефон=012376479150

но я хочу разделить эти данные на две переменные, такие как" $name,$phone", чтобы вставить их в базу данных

Что я уже пробовал:

if(isset($_POST['data'])){
$value = $_POST['data']; //i got the data here
$values = explode(',',$value); //expolde it 

foreach($values as $item) {

    $item = str_replace('[', '', str_replace(']', '', $item)); //removed spaces
    $item = str_replace(' ','',$item);

//after this i dont know how to split it to insert them in the database

    $sql = "INSERT INTO users (name, number) VALUES ('$name','$number')";
 mysqli_query($link, $sql);


      }


Итак, как я могу разделить свой вышеприведенный массив на две переменные, чтобы вставить их в базу данных mysql?

Заранее спасибо.

2 Ответов

Рейтинг:
2

Peter Leow

Таким образом, ваша проблема заключается в том, как добраться до самой внутренней части соответствующих элементов данных, что может быть достигнуто путем взрыва внутренних элементов с использованием различных разделителей, см. Пример:

<?php 
$value = "Name=Steve:Phone=+0154155423,Name=Jack:Phone=+013935175713,Name=Sarah:Phone=012376479150"; //expolde it 
$values = explode(',',$value);
    
print_r($values);

echo '<br>';

foreach($values as $item){
    
    $pairs = explode(':',$item);
    
    print_r($pairs);
	
	echo '<br>';
    
    $namePair = explode('=',$pairs[0]);
                 
    $nameValue = $namePair[1];
                 
    print_r($nameValue);
	
	echo '<br>';
    
    $phonePair = explode('=',$pairs[1]);
    
    $phoneValue = $phonePair[1];
                  
    print_r($phoneValue);
	
	echo '<br>';
}
    
?>
и результат:
Array ( [0] => Name=Steve:Phone=+0154155423 [1] => Name=Jack:Phone=+013935175713 [2] => Name=Sarah:Phone=012376479150 ) 
Array ( [0] => Name=Steve [1] => Phone=+0154155423 ) 
Steve
+0154155423
Array ( [0] => Name=Jack [1] => Phone=+013935175713 ) 
Jack
+013935175713
Array ( [0] => Name=Sarah [1] => Phone=012376479150 ) 
Sarah
012376479150
Изучите код, чтобы понять, как выбрать соответствующие значения имени и телефона для вставки в mysql.


Рейтинг:
0

me7me7_1979

Попробуйте это чистое решение MySQL:

SELECT
  TRIM(LEADING 'Name=' FROM SUBSTRING_INDEX(NamePhonePair, ":", 1))   AS Name,
  TRIM(LEADING 'Phone=' FROM SUBSTRING_INDEX(NamePhonePair, ":", -1)) AS Phone
FROM
  (SELECT
     SUBSTRING_INDEX(NamePhonePairs, ',', 1) AS NamePhonePair
   FROM
     (SELECT
        TRIM(LEADING ',' FROM TRIM(LEADING SUBSTRING_INDEX(DATA, ',', Indx - 1) FROM DATA)) AS NamePhonePairs
      FROM
        (SELECT
           *
         FROM
           (SELECT
              "Name=Steve:Phone=+0154155423,Name=Jack:Phone=+013935175713,Name=Sarah:Phone=012376479150"
              AS DATA
           ) AS t1
           CROSS JOIN
           (SELECT
                         1 AS Indx
                       UNION ALL
                       SELECT
                         2
                       UNION ALL
                       SELECT
                         3
                       #UNION ALL
                       #SELECT
                       #  4
                       # ...
           )
           AS counter)
        AS t2)
     AS t3)
  AS t4