PHP вставка и обновление в цикле - PullRequest
0 голосов
/ 24 октября 2019

У меня был этот php-скрипт здесь, и я хочу обновить таблицу на основе $id и $name. Обратимся к скрипту, в таблице успешно обновлены id='1' with name='A' и id='2' with name='B'. Но имя C,D пока не содержит значения id. Очевидно, мне нужно сделать запрос вставки. Но как сделать запрос вставки в цикле на основе оставшегося имени, у которого еще нет идентификатора?

А также, если размер id > name, мне нужно, чтобы оставшиеся id без name были удалены. Ценю вашу помощь.

<?php
  $id   = "1,2";
  $name = "A,B,C,D";

  $sliptId = explode(",", $id);
  $sliptName = explode(",", $name);

  $sizeOfId = sizeof($sliptId);
  $sizeOfName = sizeof($sliptName );

  if(($sizeOfId < $sizeOfName ) || ($sizeOfId > $sizeOfName)){
    //not even data
    for($x=0; $x< $sizeOfId; $x++ ){
      $sql = "UPDATE tbl
              SET name = '".$sliptName[$x]."' 
              WHERE id = '".$sliptId[$x]."' ";  
      echo $sql;

    }
  }else{
    //even data. Update as normal.
  }
?>

Ответы [ 2 ]

0 голосов
/ 24 октября 2019
<?php
  $id   = "1,2";
  $name = "A,B,C,D";

  $sliptId = explode(",", $id);
  $sliptName = explode(",", $name);

  $sizeOfId = sizeof($sliptId);
  $sizeOfName = sizeof($sliptName );

  if($sizeOfId <= $sizeOfName){
    //not even data
    for($x=0; $x< $sizeOfId; $x++ ){
      $sql = "UPDATE tbl
              SET name = '".$sliptName[$x]."' 
              WHERE id = '".$sliptId[$x]."' ";
    }
    for($x=$sizeOfId; $x< $sizeOfName; $x++ ){
      $sql = "INSERT INTO tbl values(null,'".$sliptName[$x]."')";
    }
  }else{
    for($x=0; $x< $sizeOfName; $x++ ){
      $sql = "UPDATE tbl
              SET name = '".$sliptName[$x]."' 
              WHERE id = '".$sliptId[$x]."' ";
    }
  }
0 голосов
/ 24 октября 2019

Нечто подобное можно сделать:

$result = array_map(null, $sliptId, $sliptName);
print_r($result);
// you can see that now you have array of pairs from each `$slipt*` array 
// and where values from first array don't exist - first key is `empty`

foreach ($result as $pair) {
    if (empty($pair[0])) {
        // do Insert
    } else {
        // do Update
    }
} 
...