列の適切なプロパティを確認してください
まず、GEOMETRY
を使用して、データベースに適切な空間列を作成したことを確認します。 キーワード。
CREATE TABLE sp_house (geom GEOMETRY, d_nop VARCHAR(255));
認証を使用してデータベースにデータを挿入します
適切なプロパティで列を作成したら、データベースにデータを挿入できます。ただし、コードはSQL Injection
に対して広く公開されています いかなる種類の認証も行わずにデータを直接挿入するため、その他の種類のデータベースハッキング。これを回避するには、prepared statements
を使用します およびmysqli_real_escape_string
関数。 また、クエリの構文が正しいことを確認し、STGeomFromText
を置き換えます 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);
?>
参考資料と参考資料
MySQLでの空間列の作成
人口空間列
SQLインジェクションを回避する方法?
プリペアドステートメントの使用方法?