Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como inserir dados espaciais no MySQL com PHP?


Verifique a propriedade correta para as colunas


Em primeiro lugar, certifique-se de ter criado as colunas espaciais corretas no banco de dados usando o GEOMETRY palavra-chave.
CREATE TABLE sp_house (geom GEOMETRY, d_nop VARCHAR(255));

Inserir dados no banco de dados com autenticação

Depois de criar as colunas com a propriedade correta, você pode inserir os dados em seu banco de dados. No entanto, seu código é amplamente aberto a SQL Injection e outros tipos de invasão de banco de dados, pois você insere dados diretamente sem nenhum tipo de autenticação. Para evitá-lo, use prepared statements e o mysqli_real_escape_string função. Além disso, verifique se você tem a sintaxe correta para a consulta e substitua STGeomFromText para 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);
?>

Referência e leitura adicional

Criando colunas espaciais no MySQL
Preenchendo colunas espaciais
Como evitar SQL Injection ?
Como usar declarações preparadas ?