选择不使用函数显示的选项

yqhsw0fo  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(319)

我尝试在php中动态显示selects选项的值。基本上,用户创建了这些存储在数据库中的选项,然后我尝试在不同的地方获取这些选项。为此,我编写了以下函数:

function fetch_acad_yr($conn) { 
    $query = "SELECT a.fk_acadyear_id as acadyearid,b.acad_year as acadyear FROM tbl_admparam a inner join list_acad_years b on a.fk_acadyear_id = b.pk_acad_year_id";
    $stmt = $conn->prepare($query);
    if ($stmt->execute()) {
        foreach ($stmt as $row) {
            ?>
            <option value="<?php echo $row['acadyearid'] ?>"><?php echo $row['acadyear'] ?></option>
            <?php
        }
    }
}

然后在html中我调用了这个函数

<select class="form-control" id="acad_period" name="acad_period" required>
<option value="">Please select...</option>
 <?php fetch_acad_yr($conn); ?>
 </select>

但是这些选项并没有显示任何值,它只是变为空,并没有显示存储在数据库中的值。我尝试单独运行查询,查询返回所需的结果

iih3973s

iih3973s1#

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "dbname";

// Create connection
$con = new mysqli($servername, $username, $password,$dbname);
if ($con->connect_error) 
{
    die("Connection failed: " . $con->connect_error);
} 

?>
<select name="acad_period" required="">
    <option value="0">Select</option>
    <?php
    $s= "SELECT a.fk_acadyear_id as acadyearid,b.acad_year as acadyear FROM tbl_admparam a inner join list_acad_years b on a.fk_acadyear_id = b.pk_acad_year_id";
    $ex= $con->query($s);
    if (!$ex)
      {
        echo("Error description: " . mysqli_error($con));
      }
      else
      {
        while ($f= $ex->fetch_assoc())
        {
            ?>
            <option value="<?php echo $f['acadyearid'] ?>"><?php echo $f['acadyear'] ?></option>
            <?php
            # code...
        }
      }

    ?>
</select>
vsmadaxz

vsmadaxz2#

确保您有正确的连接和查询结果中的数据。我使用的基本php-mysql代码如下所示,它很有效。你把它改成pdo或者推进,然后得到结果。但while或for循环的用法相同。

$conn = mysql_connect($host, $username, $pass);
mysql_select_db($dbname, $conn);

echo "<pre>";
echo "<select>";
fetch_acad_yr($conn);
echo "<\select>";

function fetch_acad_yr($conn) { 
    $query = "SELECT a.fk_acadyear_id as acadyearid,b.acad_year as acadyear FROM tbl_admparam a inner join list_acad_years b on a.fk_acadyear_id = b.pk_acad_year_id";
    $res = mysql_query($query);
    while($row = mysql_fetch_assoc($res)){
            ?>
            <option value="<?php echo $row['acadyearid'] ?>"><?php echo $row['acadyear'] ?></option>
            <?php
    }
}
?>

对我有用。

相关问题