0

回声“你好程序员”;

我正在为一对下拉菜单挠头。它们应该显示来自 ename 和 mid 行的所有字符串。但是,这并没有发生,下拉菜单只显示每一行的一个结果。实际行中有多个测试数据字符串。

我这里有一些代码,也许你可以帮忙。让我解释。

首先这些是来自类 dbme 的方法。为了保持混乱,第二个函数完全相同,除了 getResult() 的 SQL 查询明显不同(SELECT * from member 与 memberevent 相对)

function openDB() {//creating database connection
        $conn = mysqli_connect("localhost", "root", "", "mydb");
        if (!$conn) {
            $this->error_msg = "connection error could not connect to the database:! ";  
    return false;

        }

            $this->conn = $conn;
            return true;
        }



      function getResult($sql){

            $result = mysqli_query($this->conn , "SELECT * from memberevent" );
            if ($result) {
                return $result;
            } else {
                die("SQL Retrieve Error: " . mysqli_error($this->conn));
            }
        }

其次,这是网页端的数据。

$db1 = new dbme();
$db1->openDB();
$sql="select mid from member";
$result=$db1->getResult($sql);// get the ids from the tables for the select

$sql1="select ename from event";
$result1=$db1->getResult($sql1);// get the ids from the tables for the select

if (!$_POST) //page loads for the first time
{
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" onsubmit="return validateForm(  );">
Select Member ID: <select name="mid">
<?php
while($row = mysqli_fetch_assoc($result))
echo "<option value='{$row['mid']}'>{$row['mid']} </option>";
?>
</select>
<br />
Select Event name : <select name="ename">
<?php
while($row = mysqli_fetch_assoc($result1))
echo "<option value='{$row['ename']}'>{$row['ename']} </option>";

?>
</select>
<br />

我有一个偷偷摸摸的怀疑,一个变量正在被覆盖,或者某个地方需要一个额外的循环。但我不太确定,因此我发布这个问题以征求意见。

谢谢。

4

2 回答 2

1

你需要在你的函数中遍历你的结果getResults(),否则你总是只会得到一行。

于 2013-07-12T20:14:00.547 回答
0

您正在传递 SQL 但从不使用它:

改变

function getResult($sql){

    $result = mysqli_query($this->conn , "SELECT * from memberevent" );

function getResult($sql){

            $result = mysqli_query($this->conn , $sql );
于 2013-07-12T20:09:43.560 回答