下拉语句的PHP post ID不值


PHP post ID of dropdown statement not value

我有一个PHP PDO语句,查询数据库中的表以返回用户列表。

表单用于记录维护事件,因此用户名用于记录进行维护的人员。

然而,当表单被提交时,它提交的是下拉框的值,而不是它返回的行ID。提交到的表中有一个列"engineer",它引用了工程师表,例如:John Doe id = 1.

我想我需要它来张贴ID而不是名字。下面是我的代码:

  <form action="" method="post">
<label>Engineer Name:</label>
<br/><br/>
<select id="teamlist" name="teamlist">
 <?php
        $pdo = new PDO('mysql:host=localhost;dbname=frontier_maintlog', 'user', 'pass');
        #Set Error Mode to ERRMODE_EXCEPTION.
        $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    $stmt = $pdo->prepare('Select name from engineers');
    $stmt->execute();
       while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo '<option>'.$row['name'].'</option>';
       }
  ?>
 </select> 
<br/><br/>
<input type="submit" value=" Submit " name="submit"/><br />
</form>

这是插入到数据库中的位:

 $sql = "INSERT INTO log (engineer, description, fa_description)
VALUES ('".$_POST["engineer"]."','".$_POST["description"]."','".$_POST["fa_description"]."')";

"log"表看起来有点像这样:

谢谢!对不起,如果你没有完全理解。

这里是错误我收到SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'engineer' at row 1

将字符串插入到int数据类型中。

您还应该从工程师表中选择id值,以用于选项:

...
$stmt = $pdo->prepare('Select id,name from engineers');
$stmt->execute();
// and assign value to options 
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
{
    echo "<option value='$row[id]'>$row[name]</option>";
}

你必须给option赋一个值。每个选项都需要有自己的值。在这种情况下,您只需回显该选项。

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo '<option value="'.$row['id'].'">'.$row['name'].'</option>';
}