【发布时间】:2017-08-18 03:20:09
【问题描述】:
我有两个动态下拉菜单,每个下拉菜单都有自己的提交按钮。
在用户点击提交后,第一个下拉 $_POST 数组由:$_POST['dropdownItemID'] 访问。
在用户点击$_POST['dropdownItemID'] 的提交按钮后,第二个下拉列表获取其数据,并使用用户想要的项目数填充其下拉列表。按下提交按钮后,$_POST 数组被访问:$_POST['dropdownItems']。似乎在用户从第二个下拉列表中点击提交后,$_POST['dropdownItemID'] 不再可用。
我正在尝试使用它来插入到 mySQL $stmt3->bindParam(':ItemID', $_POST['dropdownItemID'], PDO::PARAM_INT); 我注意到如果我输入一个整数,则可以触发 INSERT。任何帮助将不胜感激。
<?php
$username = $_SESSION['username'];
$pdo = new PDO("mysql:host=127.0.0.1;dbname=acacs;port=8889", 'root', 'root');
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);
$pdo->setAttribute( PDO::ATTR_EMULATE_PREPARES, FALSE);
$sql = "SELECT ItemID
FROM Item";
$stmt = $pdo->prepare($sql);
//Execute the statement.
$stmt->execute();
//Retrieve the rows using fetchAll.
$users = $stmt->fetchAll();
?>
<body>
<form method="POST">
<select id="dropdownItems" name="dropdownItemID">
<?php foreach($users as $user): ?>
<option value="<?= $user['ItemID']; ?>"><?= $user['ItemID']; ?></option>
<?php endforeach; ?>
</select>
<p>
<input type="submit" value="Submit Item choice" name="item"/>
</p>
</form>
<?php if(isset($_POST['dropdownItemID'] )){
$sql2 = "SELECT SUM(DISTINCT (NumberOfUnits))
FROM Item WHERE ItemID = " . $_POST['dropdownItemID'];
$stmt2 = $pdo->prepare($sql2);
//Execute the statement.
$stmt2->execute();
//Retrieve the rows using fetchAll.
$users2 = $stmt2->fetchColumn();
#$var = var_dump($users5);
$range = range(1, $users2);
echo "<p>";
echo "ItemID: " . $_POST['dropdownItemID'] . " Is Currently Selected";
echo "</p>";
echo "<form method=\"POST\">";
echo "<select id=\"dropdownNumberOfItems\" name=\"dropdownItems\">";
foreach ($range as $numberofitems) {
echo "<option value='$numberofitems'>$numberofitems Items</option>";
}
echo "</select>";
echo "<p>";
echo "<input type=\"submit\" value=\"Submit Request\"/>";
echo "</p>";
echo "</form>";
}
?>
<?php if(isset($_POST['dropdownItems'])) {
$sql3 = "INSERT INTO Request(RequestID,
UserName,
TimeStamp,
ServiceID,
ItemID,
ItemQuantity,
ItemProvided,
Status) VALUES (
:RequestID,
:UserName,
:TimeStamp,
:ServiceID,
:ItemID,
:ItemQuantity,
:ItemProvided,
:Status)";
$stmt3 = $pdo->prepare($sql3);
$stmt3->bindValue(':RequestID', NULL, PDO::PARAM_NULL);
$stmt3->bindValue(':UserName', $username, PDO::PARAM_STR);
$stmt3->bindValue(':TimeStamp', 1489874423, PDO::PARAM_INT);
// use PARAM_STR although a number
$stmt3->bindValue(':ServiceID', 400003, PDO::PARAM_INT);
$stmt3->bindParam(':ItemID', $$_POST['dropdownItemID'], PDO::PARAM_INT);
$stmt3->bindParam(':ItemQuantity', $_POST['dropdownItems'], PDO::PARAM_INT);
$stmt3->bindValue(':ItemProvided', 0, PDO::PARAM_INT);
$stmt3->bindValue(':Status', 'pending', PDO::PARAM_STR);
$stmt3->execute();
$lastId = $pdo->lastInsertId();
}
?>
【问题讨论】: