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 ?