Marque la propiedad correcta para las columnas
En primer lugar, asegúrese de haber creado las columnas espaciales correctas en la base de datos utilizando GEOMETRY
palabra clave.
CREATE TABLE sp_house (geom GEOMETRY, d_nop VARCHAR(255));
Insertar datos en la base de datos con autenticación
Después de crear las columnas con la propiedad correcta, puede insertar los datos en su base de datos. Sin embargo, su código está ampliamente abierto a SQL Injection
y otro tipo de piratería de bases de datos, ya que inserta datos directamente sin ningún tipo de autenticación. Para evitarlo, utilice prepared statements
y el mysqli_real_escape_string
función. Además, compruebe que tiene la sintaxis correcta para la consulta y reemplace STGeomFromText
a 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);
?>
Referencia y lecturas adicionales
Creación de columnas espaciales en MySQL
Relleno de columnas espaciales
Cómo evitar la inyección SQL ?
Cómo usar declaraciones preparadas ?