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

Come inserire dati spaziali in MySQL con PHP?

Controlla la proprietà corretta per le colonne

Prima di tutto assicurati di aver creato le colonne spaziali corrette nel database utilizzando il GEOMETRY parola chiave.

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

Inserisci dati nel database con autenticazione

Dopo aver creato le colonne con la proprietà corretta, puoi inserire i dati nel tuo database. Tuttavia, il tuo codice è ampiamente aperto a SQL Injection e altri tipi di hacking del database poiché inserisci i dati direttamente senza alcun tipo di autenticazione. Per evitarlo, usa prepared statements e il mysqli_real_escape_string funzione. Inoltre, controlla di avere la sintassi corretta per la query e sostituisci STGeomFromText a 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);
?>

Riferimento e ulteriori letture

Creazione di colonne spaziali in MySQL
Popolamento di colonne spaziali
Come evitare SQL Injection ?
Come utilizzare le istruzioni preparate ?