Php “签入后无法显示数据”复选框
我需要建议,因为我还是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
<!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>";
}
}
}
?>