我有一个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
答案 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>';
}