sql >> データベース >  >> RDS >> Mysql

PHPを使用してMySQLに空間データを挿入する方法は?

    列の適切なプロパティを確認してください

    まず、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インジェクションを回避する方法?
    プリペアドステートメントの使用方法?



    1. OracleDatabaseのPL/SQL変数の概要

    2. カジノでの24時間年中無休のスタッフ名簿のデータベースモデル

    3. sql(oracle)を使用して、最初の10レコードを選択し、次に次の10レコードを選択します。

    4. MySQLで複数の列を更新する方法