使用下拉菜单将选择查询结果拉取到窗体中


using a drop down menu to pull select query results into a form

我正在使用表单将新项目输入我的数据库。 其中一个字段是首席作家。 我想在该字段中添加一个下拉菜单,该菜单将显示我的数据库中主要作者的姓名,然后用户可以选择这些名称来填充该字段。 我已经设法让下拉列表出现在字段中,但我的代码没有生成任何名称。 我尝试设置一个可以调用这些结果的函数,但它显然不起作用。 该表单在我更改之前运行良好,因此连接到数据库不是问题。 任何帮助将不胜感激。

function query(){
$myNames = "SElECT LastName FROM Projects";
$result = $mysqli->query($myNames);
while($result = mysqli_fetch_array($myNames)){
echo '<option value=' . $record['LastName'] . '>' . $record['LastName'] . '</option>';
}
}
?>
<?php
    $connection->close();
?>
<form action="http://www.oldgamer60.com/Project/NewProject.php" method="post">
<div class="fieldset">
        <fieldset>
        Project: <input type="text" name="Project value="<?php if(isset($Project)){ echo $Project; } ?>">
        <span class="error">* <?php if(isset($ProjectErr)){ echo $ProjectErr; } ?></span>
        <br><br>
        Client: <input type="text" name="Client" value="<?php if(isset($Client)){ echo $Client; } ?>">
        <span class="error">* <?php if(isset($ClientErr)){ echo $ClientErr; } ?></span>
        <br><br>
        Lead Writer: <select name="dropdown">
                     <?php query() ?>
                     </select>
               <br><br>
        Date Received: <input type="text" name="DateReceived" value="<?php if(isset($DateReceived)){ echo $DateReceived; } ?>">
        <span class="error">* <?php if(isset($DateReceivedErr)){ echo $DateReceivedErr; } ?></span>
        <br><br>
        <input type="submit" name="submit" value="Submit"> 
     </fieldset>
    </div>
    </form>

编辑的代码:

<html>
<head>
</head>
<body>
<?php
function test_input($data){
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = "oldga740_SeniorProject";
// create connection
$connection = new mysqli($servername, $username, $password, $dbname);

function query($mysqli){
    $myNames = "SELECT LastName FROM Projects";
    if(!$result = $mysqli->query($myNames)) {die($mysqli->error);} // check for error message
    if($result->num_rows > 0){ // if there is rows
        while($record = $result->fetch_array()){
            echo '<option value="' . $record['LastName'] . '">' . $record['LastName'] . '</option>';
        }
    } else { // if there is no rows
      echo '<option value="">No Rows</option>';
    }
}
?>
<form>
Lead Writer: <select name="dropdown">
                            <?php query($mysqli); ?>
                     </select>  
</form>
<?php
$connection->close();
?>
</body>
</html>

第2次编辑:

// create connection
$connection = new mysqli($servername, $username, $password, $dbname);

function query($connection){
    $myNames = "SELECT LastName FROM Projects";
    if(!$result = $connection->query($myNames)) {die($mysqliconnection->error);} // check for error message
    if($result->num_rows > 0){ // if there is rows
        while($record = $result->fetch_array()){
            echo '<option value="' . $record['LastName'] . '">' . $record['LastName'] . '</option>';
        }
    } else { // if there is no rows
      echo '<option value="">No Rows</option>';
    }
}?>
<?php
    $connection->close();
?>
<form>
Lead Writer: <select name="dropdown">
                            <?php query($connection); ?>
                     </select>  
</form>
</body>
</html>

您有一个可变范围问题 - http://php.net/manual/en/language.variables.scope.php。 $mysqli在您的function query()中未定义。您需要将其作为参数传递。此外,您尝试对查询字符串而不是 mysqli 结果执行mysqli_fetch_array()。我已将其更新为 OO ->fetch_array().

function query($mysqli){
    $myNames = "SELECT LastName FROM Projects";
    $result = $mysqli->query($myNames);
    while($record = $result->fetch_array()){
        echo '<option value=' . $record['LastName'] . '>' . $record['LastName'] . '</option>';
    }
}

您还需要在通话中传递它

Lead Writer: <select name="dropdown">
                 <?php query($mysqli); ?>
             </select>

您可以添加一些调试以找出它不打印的原因

function query($mysqli){
    $myNames = "SELECT LastName FROM Projects";
    if(!$result = $mysqli->query($myNames)) {die($mysqli->error);} // check for error message
    if($result->num_rows > 0){ // if there is rows
        while($record = $result->fetch_array()){
            echo '<option value="' . $record['LastName'] . '">' . $record['LastName'] . '</option>';
        }
    } else { // if there is no rows
      echo '<option value="">No Rows</option>';
    }
}

根据您的编辑 - https://stackoverflow.com/posts/34257335/revisions

您的 mysqli 连接已$connection

// create connection
$connection = new mysqli($servername, $username, $password, $dbname);

所以不知道你为什么要使用$mysqli

$mysqli->query($myNames)

作为$connection != $mysqli .

当您在函数中执行查询时,您无需将所有$mysqli实例重命名为 $connection ,因为您可以更改为

Lead Writer: <select name="dropdown">
    <?php query($connection); ?>
</select>