2017-06-14 20 views
1

我有兩個頁面:addbroker.php addbroker.inc.php外鍵PHP的mysqli插入數據啓用表

addbroker.php我們獲取brokername與下拉列表下面& accountno,ACCOUNTNAME GET通過表單添加。

<?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說明brokernamebroker_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

你的SQL過於複雜,尤其是價值觀您正在使用的綁定...

if ($insert_stmt = $mysqli->prepare("INSERT INTO masterbroker (user_id, accountno,accountname,brokername,revenue,broker_id) 
    SELECT ?, ?, ?, ?, ?, broker_id FROM brokerlist WHERE brokername = ?")) { 

這仍然使用相同的結合,但是卻降低了查詢。

+0

感謝您的簡單形式,但數據仍然沒有添加。 – mimi

+0

另外user_id駐留在另一個名爲client的表中。那麼這是如何工作的? – mimi

+1

我已經更改了代碼,綁定的次數比他們本來的少1次。此外,值被簡單綁定,與「select 1」,abc''相同,並且您綁定了user_id值本身。 –