我有两页:addbroker.php addbroker.inc.php
来自 addbroker.php 的我们正在使用下拉列表& accountno,accountname通过表单添加。
<?php
$stmt = $mysqli->prepare('SELECT brokername FROM brokerlist ');
$stmt->execute(); // Execute the prepared query.
$stmt->bind_result($brokername);
$stmt->store_result();
echo "<select name='brokername'>";
while($stmt->fetch()) {
echo "<option value='" . $brokername . "'>" . $brokername . "</option>";
}
$stmt->close();
echo "</select>";
?> <br>
addbroker.inc.php 我们正在为masterbroker添加数据,其中 user_id , brokername , broker_id 是外键。
// Insert the new account into the database
if ($insert_stmt = $mysqli->prepare("INSERT INTO masterbroker (user_id, accountno,accountname,brokername,revenue,broker_id) VALUES ( (SELECT user_id FROM client WHERE user_id =?), ?, ?, (SELECT brokername FROM brokerlist WHERE brokername = ?),(SELECT broker_id FROM brokerlist WHERE brokername = ?) )")) {
$insert_stmt->bind_param('isssds', $user_id, $accountno,$accountname,$brokername,$revenue,$brokername);
// Execute the prepared query.
if (! $insert_stmt->execute()) {
header('Location: ../error.php?err=AddBroker failure: INSERT');
exit();
}
}
我在绑定变量时添加了两次$ brokername。因为我认为因为我们从$ brokername获取broker_id,所以为什么要使用单独的$ broker_id变量。不确定php编码中的错误在哪里,数据没有添加。
答案 0 :(得分:1)
您的SQL过于复杂,特别是对于您使用的绑定值...
if ($insert_stmt = $mysqli->prepare("INSERT INTO masterbroker (user_id, accountno,accountname,brokername,revenue,broker_id)
SELECT ?, ?, ?, ?, ?, broker_id FROM brokerlist WHERE brokername = ?")) {
这仍然使用相同的绑定,但会减少查询。