Kontrollera rätt egenskap för kolumnerna
Först av allt, se till att du har skapat rätt rumsliga kolumner i databasen genom att använda GEOMETRY
nyckelord.
CREATE TABLE sp_house (geom GEOMETRY, d_nop VARCHAR(255));
Infoga data i databasen med autentisering
Efter att du skapat kolumnerna med rätt egenskap kan du infoga data i din databas. Din kod är dock allmänt öppen för SQL Injection
och andra typer av databashackningar eftersom du infogar data direkt utan någon form av autentisering. För att undvika det, använd prepared statements
och mysqli_real_escape_string
fungera. Kontrollera även att du har rätt syntax för frågan och ersätt STGeomFromText
till 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);
?>
Referens och vidare läsning
Skapa rumsliga kolumner i MySQL
Populera rumsliga kolumner
Hur du undviker SQL-injektion ?
Hur man använder förberedda uttalanden ?