sql >> Databasteknik >  >> RDS >> Mysql

Hur infogar man rumslig data i MySQL med PHP?

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 ?



  1. JAVA MySQL Connection ClassNotFound undantag

  2. Hur skyddar jag mitt forum mot skräppost?

  3. Extrahera 1:a tre oktetter av en IPV4

  4. T-SQL - Infoga data i överordnade och underordnade tabeller