下拉语句的PHP帖子ID不是值

时间:2016-07-05 11:15:03

标签: php html mysql

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

表单用于记录维护事件,因此用户名用于记录已完成维护的人员。

然而,当提交表单时 - 它提交下拉框的值而不是它返回的行的ID。提交它的表有一个专栏"工程师"正在引用工程师表格,例如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"]."')";

&#34; log&#34;表格看起来有点像这样:logtableimage

谢谢!对不起,如果它没有完全合理。

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

2 个答案:

答案 0 :(得分: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>";
}

答案 1 :(得分:0)

您必须为选项指定值。每个选项都需要拥有自己的价值。在你的情况下,你只是回应选项。

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