【问题标题】:Saving data into a table将数据保存到表中
【发布时间】:2019-03-25 02:49:03
【问题描述】:

我尝试将数据保存到表格中,但它不起作用。但是另一个具有类似代码的程序会这样做,为什么?

<?php
    $nik =  $_POST['nik'];
    $no_kk =  $_POST['no_kk'];
    $nama =  $_POST['nama'];
    $lahir =  $_POST['lahir'];          
    $jenis_kelamin =  $_POST['jk'];
    $nope =  $_POST['no_hp']; 
    $no_tps =  $_POST['no_tps'];
    $pekerjaan =  $_POST['pekerjaan']; 
    $pendidikan =  $_POST['pendidikan'];
    $agama = $_POST['agama'];
    $tgl = $_POST['tgl'];      

    $simpan=$_POST['simpan'];
    $sql = "INSERT INTO tb_tj_beringin (NIK, NO_KK, NAMA_LENGKAP, JENIS_KELAMIN, TEMPAT_LAHIR, TANGGAL_LAHIR, AGAMA, PENDIDIKAN_AKHIR, JENIS_PEKERJAAN, NO_HP, NO_TPS) VALUES ('$nik', '$no_kk', '$nama','$alamat','$jenis_kelamin','$lahir','$tgl', '$agama', '$pendidikan', '$pekerjaan', '$nope', '$no_tps')";
    $data = mysqli_query('$koneksi, $sql');
    if(isset($simpan)){
         $data = $koneksi->query($sql);
         if($data){
             ?>
             <script type="text/javascript">
                alert ("Data Berhasil Disimpan");
                window.location.href="?page=anggota";
             </script>

             <?php
         }
         else{
              echo "error";
         }
    }
?>

【问题讨论】:

  • “它不起作用”。发生什么了?错误信息是什么?或者数据,如果它返回错误的数据?见mysqli_error()
  • 我认为您应该使用准备好的语句。我强烈推荐PDO

标签: php mysqli sql-insert insert-update


【解决方案1】:

这是错误的:...VALUES ('$nik', '$no_kk', '$nama'...)

PHP中单引号阻止变量扩展的问题。所以你永远不会真正插入 $nik 的值(或其他任何东西)。

第二个问题是你永远不应该,永远将来自网络请求的数据直接插入到你的数据库中。 永远不要相信用户数据。这是一个巨大的漏洞。

BOTH 问题的一个巧妙解决方案就是使用prepared statements

【讨论】:

  • 看起来INSERT 语句包含在双引号内,因此变量应该是扩展的。完全同意准备好的陈述。它们也使代码更简洁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多