sql >> Database >  >> RDS >> Mysql

Hoe ruimtelijke gegevens in MySQL invoegen met PHP?

Controleer de juiste eigenschap voor de kolommen

Zorg er allereerst voor dat u de juiste ruimtelijke kolommen in de database hebt gemaakt met behulp van de GEOMETRY zoekwoord.

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

Voeg gegevens in de database in met authenticatie

Nadat u de kolommen met de juiste eigenschap hebt gemaakt, kunt u de gegevens in uw database invoegen. Uw code staat echter algemeen open voor SQL Injection en andere soorten database-hacks, omdat u gegevens rechtstreeks invoert zonder enige vorm van authenticatie. Om dit te vermijden, gebruikt u prepared statements en de mysqli_real_escape_string functie. Controleer ook of u de juiste syntaxis voor de query hebt en vervang STGeomFromText naar 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);
?>

Referentie en verder lezen

Ruimtelijke kolommen maken in MySQL
Ruimtelijke kolommen vullen
SQL-injectie vermijden ?
Voorbereide verklaringen gebruiken ?



  1. Java-opgeslagen procedure aanroepen in Java-programma

  2. webinserts tegelijk

  3. Oracle SQL, vul ontbrekende waarde in met de dichtstbijzijnde niet-ontbrekende

  4. Android-toegang tot externe SQL-database