Tjek den rigtige egenskab for kolonnerne
Først og fremmest skal du sikre dig, at du har oprettet de rigtige rumlige kolonner i databasen ved at bruge GEOMETRY
søgeord.
CREATE TABLE sp_house (geom GEOMETRY, d_nop VARCHAR(255));
Indsæt data i databasen med godkendelse
Når du har oprettet kolonnerne med den rigtige egenskab, kan du indsætte dataene i din database. Din kode er dog meget åben for SQL Injection
og andre former for database hackings, da du indsætter data direkte uden nogen form for godkendelse. For at undgå det, brug prepared statements
og mysqli_real_escape_string
fungere. Tjek også, at du har den rigtige syntaks til forespørgslen, og erstat STGeomFromText
til 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);
?>
Reference og yderligere læsning
Oprettelse af rumlige kolonner i MySQL
Populering af rumlige kolonner
Sådan undgår du SQL-injektion ?
Sådan bruger du forberedte udsagn ?