sql >> Database teknologi >  >> RDS >> Mysql

Hvordan indsætter man rumlige data i MySQL med PHP?

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 ?



  1. MySQL, CONCAT, resultatet er null efter et stykke tid

  2. Find det seneste dubletter-ID med MySQL

  3. Generer INFORMATION_SCHEMA-tabel til MySQL-database

  4. Sammensat primær nøgle i django