Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment insérer des données spatiales dans MySQL avec PHP ?

Vérifier la bonne propriété pour les colonnes

Tout d'abord, assurez-vous d'avoir créé les bonnes colonnes spatiales dans la base de données en utilisant le GEOMETRY mot-clé.

CREATE TABLE sp_house (geom GEOMETRY, d_nop VARCHAR(255));

Insérer des données dans la base de données avec authentification

Après avoir créé les colonnes avec la bonne propriété, vous pouvez insérer les données dans votre base de données. Cependant, votre code est largement ouvert à SQL Injection et d'autres types de piratage de bases de données puisque vous insérez des données directement sans aucune forme d'authentification. Pour l'éviter, utilisez des prepared statements et le mysqli_real_escape_string fonction. Vérifiez également que vous avez la bonne syntaxe pour la requête et remplacez STGeomFromText à ST_GeomFromText .

<?php
  include_once 'db.php';

  $nop = $_POST['nop'];
  $plot_bng = $_POST['plot_bng'];

  // You can also check that the variables are empty or not ...

  // Clean the variables and prepare for inserting
  $plot_bng = mysqli_real_escape_string($con, $plot_bng);
  $nop = mysqli_real_escape_string($con, $nop);
  $sql = "INSERT INTO sp_house (geom, d_nop)
                                VALUES (ST_GeomFromText(POINT(?)), ?)";

  // Prepared statement for inserting
  $stmt = $conn->prepare($sql); // prepare statement for inserting
  $stmt->bind_param("ss",$plot_bng,$nop); // replace question marks with values
  $stmt->execute(); // execute command
  $stmt->close(); // close connection

  echo json_encode(array("value"=>1));

  mysqli_close($con);
?>

Référence et lectures complémentaires

Création de colonnes spatiales dans MySQL
Remplir les colonnes spatiales
Comment éviter l'injection SQL ?
Comment utiliser les instructions préparées ?