在不同行的SQL PHP中显示数据库中的列

  • 本文关键字:显示 数据库 PHP SQL php sql
  • 更新时间 :
  • 英文 :


图片说明我正在尝试在代码中显示option_value(第三列(值。我刚刚尝试测试mysqli_fetch_array方法,但它显示了未定义偏移量1和2的错误。你能建议在页面中单独显示数值的方法吗?

<?php
$connection = mysqli_connect("localhost", "root","","adminpanel");
$query = "SELECT option_value FROM settings";
$query_run = mysqli_query($connection,$query);
if(mysqli_num_rows($query_run)>0)
{
$row = mysqli_fetch_array($query_run)
?>
<form action="code.php" method="POST">
<div class="form-group">
<label>Fine rate :</label>
<input type="text" name="fine_rate" value="<?php  echo $row[0]; ?>" class="form-control">
</div> 
<div class="form-group">
<label>Email template for issued books:</label>
<textarea name="issue_template" class="form-control"><?php echo $row[1]; ?></textarea>
</div>
<div class="form-group">
<label>Email template for return books:</label>
<textarea name="return_template" class="form-control"><?php  echo $row[2]; ?></textarea>
</div>  
</form>
<?php 
} 
?>

进行时

$row = mysqli_fetch_array($query_run)

它为您的结果创建一个数组。考虑到您只选择了option_value,该数组只有一个元素。因此,您只能访问行[0]。顾名思义,$row变量只包含一行,因此您必须再次使用fetch数组来获取下一行。像这样的

<?php
$connection = mysqli_connect("localhost", "root","","adminpanel");
$query = "SELECT option_value FROM settings";
$query_run = mysqli_query($connection,$query);
if(mysqli_num_rows($query_run)>0)
{
$row = mysqli_fetch_array($query_run)
?>
<form action="code.php" method="POST">
<div class="form-group">
<label>Fine rate :</label>
<input type="text" name="fine_rate" value="<?php  echo $row[0]; ?>" class="form-control">
</div> 
<?php
$row = mysqli_fetch_array($query_run)
?>
<div class="form-group">
<label>Email template for issued books:</label>
<textarea name="issue_template" class="form-control"><?php echo $row[0]; ?></textarea>
</div>
<?php
$row = mysqli_fetch_array($query_run)
?>
<div class="form-group">
<label>Email template for return books:</label>
<textarea name="return_template" class="form-control"><?php  echo $row[0]; ?></textarea>
</div>  
</form>
<?php 
} 
?>

这不是一个好的方法,因为你不能每次都按这个顺序处理行。您可以从该表中获取所有列,然后根据需要对数据进行排序:

$rows;
$finerate;
$email_temp_issue;
$email_temp_return;
$query = "SELECT * FROM settings";
$query_run = mysqli_query($connection,$query);
if(mysqli_num_rows($query_run)>0){
$rows = mysqli_fetch_array($query_run);
}
foreach ($rows as $row){
switch ($row['option_name']) {
case "finerate":
$finerate = $row['option_value'];
break;
case "email_temp_issue":
$email_temp_issue= $row['option_value'];        
break;
case "email_temp_return":
$email_temp_return= $row['option_value'];
break;   
}
}
?>
<form action="code.php" method="POST">
<div class="form-group">
<label>Fine rate :</label>
<input type="text" name="fine_rate" value="<?php  echo $finerate ; ?>" class="form-control">
</div> 
<?php
$row = mysqli_fetch_array($query_run)
?>
<div class="form-group">
<label>Email template for issued books:</label>
<textarea name="issue_template" class="form-control"><?php echo email_temp_issue; ?></textarea>
</div>
<?php
$row = mysqli_fetch_array($query_run)
?>
<div class="form-group">
<label>Email template for return books:</label>
<textarea name="return_template" class="form-control"><?php  echo $email_temp_return; ?></textarea>
</div>  
</form>
<?php 

这样一来,表中的id无关紧要,即使你在表中有更多的记录

最新更新