PHP Mysqli在启用外键的表

时间:2017-06-14 12:00:46

标签: php mysql mysqli

我有两页: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编码中的错误在哪里,数据没有添加。

1 个答案:

答案 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 = ?")) {

这仍然使用相同的绑定,但会减少查询。