Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie füge ich räumliche Daten in MySQL mit PHP ein?

Überprüfen Sie die richtige Eigenschaft für die Spalten

Stellen Sie zunächst sicher, dass Sie die richtigen räumlichen Spalten in der Datenbank erstellt haben, indem Sie die GEOMETRY verwenden Schlüsselwort.

CREATE TABLE sp_house (geom GEOMETRY, d_nop VARCHAR(255));

Daten mit Authentifizierung in die Datenbank einfügen

Nachdem Sie die Spalten mit der richtigen Eigenschaft erstellt haben, können Sie die Daten in Ihre Datenbank einfügen. Ihr Code ist jedoch weitgehend offen für SQL Injection und andere Arten von Datenbank-Hacking, da Sie Daten direkt ohne jegliche Authentifizierung einfügen. Um dies zu vermeiden, verwenden Sie prepared statements und der mysqli_real_escape_string Funktion. Überprüfen Sie außerdem, ob Sie die richtige Syntax für die Abfrage haben, und ersetzen Sie STGeomFromText zu 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);
?>

Nachschlagewerk und weiterführende Literatur

Räumliche Spalten in MySQL erstellen
Räumliche Spalten füllen
So vermeiden Sie SQL-Injection ?
Vorbereitete Anweisungen verwenden ?