sql >> Databáze >  >> RDS >> Mysql

Jak vložit prostorová data do MySQL pomocí PHP?

Zkontrolujte správnou vlastnost pro sloupce

Nejprve se ujistěte, že jste v databázi vytvořili správné prostorové sloupce pomocí GEOMETRY klíčové slovo.

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

Vložit data do databáze s ověřením

Po vytvoření sloupců se správnou vlastností můžete vložit data do databáze. Váš kód je však široce otevřený pro SQL Injection a další druhy hackování databáze, protože data vkládáte přímo bez jakéhokoli druhu ověřování. Abyste se tomu vyhnuli, použijte prepared statements a mysqli_real_escape_string funkce. Zkontrolujte také, zda máte pro dotaz správnou syntaxi, a nahraďte STGeomFromText na 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);
?>

Reference a další informace

Vytváření prostorových sloupců v MySQL
Vyplňování prostorových sloupců
Jak se vyhnout SQL Injection ?
Jak používat připravená prohlášení ?



  1. Proč se mi zobrazuje chyba formátu:Vlastnost 'v$session.program' se připojuje k Oracle?

  2. Drahé úplné skenování tabulky při výběru všech bez podmínky

  3. Použití uložené procedury Oracle PL/SQL k udělení práv k tabulkám jiného uživatele

  4. django+mysql=Objekt 'DatabaseWrapper' nemá žádný atribut Chyba 'Databáze'