如何使用PHP和Mysql一次只显示一条记录



我正在尝试为用户创建一个选项,以编辑我使用PHP和MySQL创建的表中的信息。我设法创建了这个函数,并且数据正在被修改,唯一的问题是当我点击";编辑";按钮,编辑屏幕总是显示表中的所有记录,而不是只显示我想修改的数据,我该如何解决这个问题?

这是我的代码:

<?php
ini_set('default_charset','UTF-8');
$host="localhost"; 
$username="********";  
$password="********"; 
$db_name="*********"; 
$con=mysqli_connect("$host", "$username", "$password", "$db_name")or die("cannot connect"); 
mysqli_set_charset($con,"utf8");
$sql = "SELECT `ID`, `carro`, `datasaida` , `horasaida` , `datachegada`, `horachegada`, `kminicial`, `kmfinal`, `destino`, `motorista` FROM `carro`";
$query = $con->query($sql);
while ($dados = $query->fetch_assoc()) {
$id = $dados["ID"];
$carro = $dados["carro"];
$datasaida = $dados["datasaida"];
$horasaida = $dados["horasaida"];
$datachegada = $dados["datachegada"];
$horachegada = $dados["horachegada"];
$kminicial = $dados["kminicial"];
$kmfinal = $dados["kmfinal"];
$destino = $dados["destino"];
$motorista = $dados["motorista"];
echo "
<form id="form1" name="form1" method="post" action="salvar_edicao.php">
ID: <input name="id" type="text" readonly="readonly" id="id" value="$id" size="35"/><br>
CARRO: <input name="carro" type="text" id="id" value="$carro" size="35"/><br>
DATA DE SAIDA: <input name="datasaida" type="text" id="id" value="$datasaida" size="35"/><br>
HORA DE SAIDA: <input name="horasaida" type="text"  id="id" value="$horasaida" size="35"/><br>
DATA DE CHEGADA: <input name="datachegada" type="text"  id="id" value="$datachegada" size="35"/><br>
HORA DE CHEGADA: <input name="horachegada" type="text"  id="id" value="$horachegada" size="30"/><br>
KM INICIAL: <input name="kminicial" type="text"  id="id" value="$kminicial" size="35"/><br>
KM FINAL: <input name="kmfinal" type="text"  id="id" value="$kmfinal" size="35"/><br>
DESTINO: <input name="destino" type="text"  id="id" value="$destino" size="35"/><br>
MOTORISTA: <input name="motorista" type="text"  id="id" value="$motorista" size="35"/><br>
<input type="submit" onclick="return confirm('Deseja mesmo editar esse registro?');" name="Submit" value="SALVAR ALTERAÇÕES" class="btnNew"/>
</form>
";    
}
?>

在编辑按钮上,您还应该设置他们想要编辑的所有信息中的哪些信息。这里的常见步骤是提供将被编辑的行id:

<a href="edit.php?id=<?php echo $fieldId; ?>">edit</edit>

在您的编辑脚本上,您使用$_GET['id']读取id参数,并在查询中设置它:

$sql = "SELECT `ID`, `carro`, `datasaida` , `horasaida` , `datachegada`, `horachegada`, `kminicial`, `kmfinal`, `destino`, `motorista` FROM `carro` WHERE `ID` = '$id'";

这将确保您只得到一条记录,而不是整个表。

PHP内置了格式化/模板,您可以使用它来改进代码的格式:

<?php
ini_set('default_charset','UTF-8');
$host     = "localhost"; 
$username = "********";  
$password = "********"; 
$db_name  = "*********"; 
$con = mysqli_connect("$host", "$username", "$password", "$db_name")or die("cannot connect"); 
mysqli_set_charset($con,"utf8");
$sql   = "SELECT `ID`, `carro`, `datasaida` , `horasaida` , `datachegada`, `horachegada`, `kminicial`, `kmfinal`, `destino`, `motorista` FROM `carro`";
$query = $con->query($sql);
while($dados = $query->fetch_assoc()){
$id = $dados["ID"];
$carro = $dados["carro"];
$datasaida = $dados["datasaida"];
$horasaida = $dados["horasaida"];
$datachegada = $dados["datachegada"];
$horachegada = $dados["horachegada"];
$kminicial = $dados["kminicial"];
$kmfinal = $dados["kmfinal"];
$destino = $dados["destino"];
$motorista = $dados["motorista"];
// we can make use of PHP's built formatting/templating functionality here
?>
<form id="form1" name="form1" method="post" action="salvar_edicao.php">
ID: <input name="id" type="text" readonly="readonly" id="id" value="<?php echo $id; ?>" size="35"/><br>
CARRO: <input name="carro" type="text" id="carro" value="<?php echo $carro; ?>" size="35"/><br>
DATA DE SAIDA: <input name="datasaida" type="text" id="datasaida" value="<?php echo $datasaida; ?>" size="35"/><br>
HORA DE SAIDA: <input name="horasaida" type="text" id="horasaida" value="<?php echo $horasaida; ?>" size="35"/><br>
DATA DE CHEGADA: <input name="datachegada" type="text" id="datachegada" value="<?php echo $datachegada; ?>" size="35"/><br>
HORA DE CHEGADA: <input name="horachegada" type="text" id="horachegada" value="<?php echo $horachegada; ?>" size="30"/><br>
KM INICIAL: <input name="kminicial" type="text" id="kminicial" value="<?php echo $kminicial; ?>" size="35"/><br>
KM FINAL: <input name="kmfinal" type="text" id="kmfinal" value="<?php echo $kmfinal; ?>" size="35"/><br>
DESTINO: <input name="destino" type="text" id="destino" value="<?php echo $destino; ?>" size="35"/><br>
MOTORISTA: <input name="motorista" type="text" id="motorista" value="<?php echo $motorista; ?>" size="35"/><br>
<input type="submit" onclick="return confirm('Deseja mesmo editar esse registro?');" name="Submit" value="SALVAR ALTERAÇÕES" class="btnNew"/>
</form>
<?php
}

提交表单后,位于salvar_edicao.php中的代码应该如下所示:

<?php 
ini_set('default_charset','UTF-8');
$host     = "localhost"; 
$username = "********";  
$password = "********"; 
$db_name  = "*********"; 
$con = mysqli_connect("$host", "$username", "$password", "$db_name")or die("cannot connect"); 
mysqli_set_charset($con,"utf8");
// check that the data has been posted
if(!isset($_POST["id"])){
// No `id` found in post data
die;
}
$sql   = "SELECT `ID`, `carro`, `datasaida` , `horasaida` , `datachegada`, `horachegada`, `kminicial`, `kmfinal`, `destino`, `motorista` FROM `carro` WHERE `ID` = ?";
$statement = $con->prepare($sql);
$statement->bind_param('i', $_POST['id']);
$statment->execute();
$query = $statement->get_result();
$dados = $query->fetch_assoc();
if(is_null($dados)){
// No rows exist for this ID
die;
}
// $dados = row in database
// $_POST = data submitted from form

最新更新