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