Php “签入后无法显示数据”复选框

Php “签入后无法显示数据”复选框,php,html,mysql,Php,Html,Mysql,我需要建议,因为我还是PHP新手,我尝试从复选框中获取数据,即数据来自数据库,因此当我选中它们并按下按钮时,它将显示我选择的数据,没有错误,但我选择的数据无法显示。这是代码: <!DOCTYPE html> <html> <head> <body> <!-- code to show db data with chechbox--> <form method="post"> <?php include

我需要建议,因为我还是PHP新手,我尝试从复选框中获取数据,即数据来自数据库,因此当我选中它们并按下按钮时,它将显示我选择的数据,没有错误,但我选择的数据无法显示。这是代码:

<!DOCTYPE html>
<html>
<head>
<body>
<!-- code to show db data with chechbox-->
<form method="post">
  <?php
      include "db_connect.php";

      $sql_select = $dt_bas->prepare("SELECT id_pegawai, nm_pegawai, tmp_lahir FROM pegawai");
      $sql_select->execute();

      while($row = $sql_select->fetch(PDO::FETCH_ASSOC)){
                $id =  $row["id_pegawai"]; // id
                $nm =  $row["nm_pegawai"]; // employe name
                $tmp = $row["tmp_lahir"]; // birthday
?>
    <input type="checkbox" name="select_DB[]" id="select_DB[]" /><?php echo "$id"."</br>";?>


<?php    } ?>

<input type="submit"  value="Test">
</form>

</body>
</head>
</html>

处理代码:

<?php
 // this code for get the data that is chosen from checkbox
include "db_connect";

if(isset($_POST['select_DB[]'])){
  $id = $_POST['select_DB[]'];
  $sql_select2 = $db_bas->prepare("SELECT id_pegawai, nm_pegawai,   tmp_lahir FROM pegawai WHERE id_pegawai = '$id' ");
  $sql_select2->execute();

  while($row = $sql_select->fetch(PDO::FETCH_ASSOC)){
            $id =  $row["id_pegawai"]; // id
            $nm =  $row["nm_pegawai"]; // employee name
            $tmp = $row["tmp_lahir"]; // birth place

            echo "$id"." "."$nm"." "."$tmp"."</br>";
          }
}
?>

有些事情你仍然没有做,并且阻止了这项工作的进行(更不用说其他事情,比如上面提到的注入):

  • 首先,您没有为复选框添加“value”属性,因此没有传递值。即:

尝试将$id作为复选框输入中的值,如下所示:

<input type="checkbox" name="select_DB[]" value="<?php echo $id; ?>" /><?php echo $id; ?><br>

警告:这有一些严重问题,因为在查询中使用了
$\u GET
数据。尽可能使用事先准备好的陈述。在任何用户提供的数据都指定有
:name
指示符的情况下,这些操作非常简单,稍后将根据您使用的是哪个指示符,使用
绑定参数或
执行
填充指示符。切勿将
$\u POST
$\u GET
数据直接放在查询中。
select\u DB[]
是不正确的用法。
POST
索引是一个数组,因此在
$\u POST['select\u DB']
上迭代。您还应该设置一个值。另请参见上面的sql注入说明
id\u pegawai='$id'
应该是
id\u pegawai=?
然后在execute中绑定
$id
。您的
echo
也可以简化
echo“{$id}{$nm}{$tmp}
@tadman谢谢你的建议,但是你能更具体地说,我把$\U放在我的查询中的什么地方吗?我很抱歉,因为我还是新来的PHP@chris85我必须在哪里设置值?感谢您的回答
$id
$\u POST
中提取,然后直接放入您的查询中。感谢您的帮助(y)@arturo@christ_tp也请确保你遵守塔达姆在评论中所说的话。如果正确,也标记为答案。
<?php
// this code for get the data that is chosen from checkbox
include "db_connect";

if(isset($_POST['select_DB'])){
   foreach($_POST['select_DB'] as $select=>$option_id){
      $sql_select2 = $db_bas->prepare("SELECT id_pegawai, nm_pegawai,   tmp_lahir FROM pegawai WHERE id_pegawai = '$option_id' ");
      $sql_select2->execute();

      while($row = $sql_select->fetch(PDO::FETCH_ASSOC)){
        $id =  $row["id_pegawai"]; // id
        $nm =  $row["nm_pegawai"]; // employee name
        $tmp = $row["tmp_lahir"]; // birth place

        echo "$id"." "."$nm"." "."$tmp"."</br>";
      }
    }
}
?>