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