Php 用准备好的语句填充的下拉列表

Php 用准备好的语句填充的下拉列表,php,mysql,html,Php,Mysql,Html,您好,谢谢您提前抽出时间 我希望使用PHP中的一个准备好的语句从mysql数据库填充一个下拉菜单。我只是在寻找任何具有匹配“客户id”的条目。我已经看到了很多解决方法(其中一些过时了,一些非常复杂),但还没有找到一个例子,以一种与我一直使用的方法(见下文)足够相似的方式使用php,以便我能够拼凑出一些可行的方法 下面是我想要使用的代码 <?php include ('connect.php'); if ($_POST) { if (!empty($_POST['client_i

您好,谢谢您提前抽出时间

我希望使用PHP中的一个准备好的语句从mysql数据库填充一个下拉菜单。我只是在寻找任何具有匹配“客户id”的条目。我已经看到了很多解决方法(其中一些过时了,一些非常复杂),但还没有找到一个例子,以一种与我一直使用的方法(见下文)足够相似的方式使用php,以便我能够拼凑出一些可行的方法

下面是我想要使用的代码

<?php
include ('connect.php');

if ($_POST) {

    if (!empty($_POST['client_id'])) {
        $client_id = htmlspecialchars($_POST['client_id']);

        $stmt = $link->prepare("SELECT project_id, nickname FROM project WHERE client_id=?");
        $stmt->bind_param('s', $client_id);
        $stmt->execute();

        $row = $stmt->fetch();

        while ($stmt->fetch()) {
            echo ("<option value='$row['project_id']'>$row['nickname']</option>");
        }

        $stmt->close();

    }
}

include ('disconnect.php');
?>

我知道回音部分是不正确的,但我想至少能够展示我的想法。一般来说,我不是100%正确地使用row变量。我感谢您的帮助

编辑:

上面的文件名为“fetchProjects.php”

下面是包含此PHP文件的代码

<div class="twelve columns">
    <p>select an existing project below</p>     
    <select size="10" name="selectedProject">
        <?php include('fetchProjects.php')?>
    </select>
</div>

在下面选择一个现有项目


您可以在while循环的每次迭代中使用bind\u result,用当前数据库行值更新$project\u id和$昵称

$stmt = $link->prepare("SELECT project_id, nickname FROM project WHERE client_id=?");
$stmt->bind_param('s', $client_id);
$stmt->bind_result($project_id, $nickname);
$stmt->execute();
$stmt->store_result();

while ($stmt->fetch()) {
    echo '<option value="'.$project_id.'">'.$nickname.'</option>';
}

$stmt->close();
$stmt=$link->prepare(“从客户id=?”所在的项目中选择项目id、昵称”);
$stmt->bind_参数('s',$client_id);
$stmt->bind\u result($project\u id,$昵称);
$stmt->execute();
$stmt->store_result();
而($stmt->fetch()){
回显“.$昵称”;
}
$stmt->close();

未测试,但应该可以工作

您可以在while循环的每次迭代中使用bind_result$project_id和$昵称,并使用当前数据库行值进行更新

$stmt = $link->prepare("SELECT project_id, nickname FROM project WHERE client_id=?");
$stmt->bind_param('s', $client_id);
$stmt->bind_result($project_id, $nickname);
$stmt->execute();
$stmt->store_result();

while ($stmt->fetch()) {
    echo '<option value="'.$project_id.'">'.$nickname.'</option>';
}

$stmt->close();
$stmt=$link->prepare(“从客户id=?”所在的项目中选择项目id、昵称”);
$stmt->bind_参数('s',$client_id);
$stmt->bind\u result($project\u id,$昵称);
$stmt->execute();
$stmt->store_result();
而($stmt->fetch()){
回显“.$昵称”;
}
$stmt->close();

未测试,但它应该可以工作

您忘记在此处分配取货:

while ($stmt->fetch()) {...
应该是:

while ($row = $stmt->fetch()) {...

现在,您尝试使用
$row
访问的数组元素将起作用。您应该删除第一次提取,因为这将消耗第一行数据。还有一件事:您的
echo
周围不需要括号

您忘记在此处分配取货:

while ($stmt->fetch()) {...
应该是:

while ($row = $stmt->fetch()) {...
现在,您尝试使用
$row
访问的数组元素将起作用。您应该删除第一次提取,因为这将消耗第一行数据。还有一件事:您的
echo
周围不需要括号

请查看:

我建议:

<?php
include ('connect.php');

if (isset($_POST['client_id'])) {

    if (!empty($_POST['client_id'])) {
        $client_id = htmlspecialchars($_POST['client_id']);

        $stmt = $link->prepare("SELECT project_id, nickname FROM project WHERE client_id=?");
        $stmt->bind_param('s', $client_id);
        $stmt->execute();

        $stmt->bind_result($pid, $nick);

        while ($stmt->fetch()) {
            echo ("<option value='$pid'>$nick</option>");
        }

        $stmt->close();
    }
}

include ('disconnect.php');
?>

请查看:

我建议:

<?php
include ('connect.php');

if (isset($_POST['client_id'])) {

    if (!empty($_POST['client_id'])) {
        $client_id = htmlspecialchars($_POST['client_id']);

        $stmt = $link->prepare("SELECT project_id, nickname FROM project WHERE client_id=?");
        $stmt->bind_param('s', $client_id);
        $stmt->execute();

        $stmt->bind_result($pid, $nick);

        while ($stmt->fetch()) {
            echo ("<option value='$pid'>$nick</option>");
        }

        $stmt->close();
    }
}

include ('disconnect.php');
?>


您遇到了什么问题?我没有看到
,也没有看到匹配的命名元素匹配表单中的
$\u POST['client\u id']
类型的内容。我在另一个文件的标记中包含了这个PHP….在另一个文件中;我明白了。好吧,我还是不知道;-)是的,顺便说一句;您使用了两次
fetch()
,仅此一项就应该抛出一个错误。您遇到了什么问题?我没有看到
,也没有看到匹配的命名元素匹配
$\u POST['client\u id']
表单和
name=“client\u id”
类型的内容。我在另一个文件的标记中包含了这个PHP….在另一个文件中;我明白了。好吧,我还是不知道;-)是的,顺便说一句;您使用了两次
fetch()
,仅此一项就应该引发错误。