PHP Mysqli Удалить из базы данных

Поэтому я подумал, что это простой запрос на простое удаление строк, в которых не было данных, хранящихся в определенных столбцах, но почему-то мой запрос возвращает, что нулевые строки были удалены, я проверил таблицу, и они все еще там.

То, что я хочу сделать, - удалить из моей таблицы gps_routes где route_lat и route_long не содержат местоположение (пустое).

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

$sql = "SELECT * FROM gps_routes";
$result = $link->query($sql);
$rowCount = $result->num_rows; $rows_deleted = 0; $delete_row = false;

if ($rowCount > 0)
{

 while($row = $result->fetch_assoc())
 {
      $user = $row['user_email'];
      $id = $row['route_id'];
      $lat = $row['route_lat'];
      $lng = $row['route_long'];

      if (empty($lat) || empty($lng)){
        $delete_row = true;
      }

      if (ctype_space($lat) || strlen(trim($lat)) == 0){
        $delete_row = true;
      }

      if ($lat == '' || $lat == ""){
        $delete_row = true;
      }

      if ($delete_row){
        $rows_deleted++;
        mysqli_query($link, "DELETE FROM gps_routes WHERE user_email = '$user' AND route_id = '$id'");
     }
  }
     echo "Routes deleted: $rows_deleted";
}

Всего 1 ответ


Из вашего кода предполагается, что вы просто хотите пройти через свою БД и проверить, нет ли длинной и длинной. Если они затем удаляют их.

Похоже, вы можете просто использовать этот запрос, чтобы выполнить эту работу.

mysqli_query($link, "DELETE FROM gps_routes WHERE (route_lat = '' OR route_lat IS NULL) OR (route_long = '' OR  route_long IS NULL)");

Так я бы сделал это на основе кода, который вы предоставили:

$query = "DELETE FROM gps_routes WHERE (route_lat = '' OR route_lat IS NULL) OR (route_long = '' OR  route_long IS NULL)";
$result = $link->query($query);

echo 'Routes deleted: ' . $result->num_rows;