2016-01-22 43 views
0

在此先感謝,我真的堅持用SQL更新多行SQL。我嘗試了多次迭代,似乎只是錯過了一些很簡單的東西,所以任何幫助我都會很感激。更新PHP中的多個SQL行1提交

基本上我有一個大的前端表格顯示錶單中的物品的當前庫存,這是完美的,正確顯示所有金額,我有一個提交按鈕在底部,理想情況下想更新所做的任何更改點擊一下。我知道我錯過了一些相當明顯的東西,但是我無法理解它。

這是表單顯示代碼:

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM stock"; 

$result = mysqli_query($conn,$sql)or die(mysqli_error()); 

echo "<div class='table-striped'><form action='update_stock.php' action='post'><table class='table>'"; 
echo "<tr> 

    <th>Sizing</th> 

    <th>Black Active</th> 
    <th>Nude Active</th> 
    <th>Blue Active</th> 
    <th>Pink Active</th> 
    <th>Purple Active</th> 

    <th>Black Vest</th> 
    <th>Nude Vest</th> 
    <th>Pink Vest</th> 
    <th>Blue Vest</th> 

    <th>Minnie</th> 
    <th>Skulls</th> 
    <th>Batman</th> 


</tr>"; 

while($row = mysqli_fetch_array($result)) { 

$id = $row['sizing']; 

$ba = $row['BlackActive']; 
$na = $row['BeigeActive']; 
$blua = $row['BlueActive']; 
$pina = $row['PinkActive']; 
$pura = $row['PurpleActive']; 

$bv = $row['BlackVest']; 
$nv = $row['BeigeVest']; 
$pv = $row['PinkVest']; 
$bluv = $row['BlueVest']; 

$min = $row['Minnie']; 
$sku = $row['Skulls']; 
$bat = $row['Batman']; 





echo "<tr> 

<td style='padding:10px;font-weight:bold;'><input class='form-control' type='hidden' name='id[]' value=".$id." />".$id."</td> 

<td style='padding:10px;'><input class='form-control' type='text' name='ba[]' value=".$ba." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='na[]' value=".$na." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='blua[]' value=".$blua." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='pina[]' value=".$pina." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='pura[]' value=".$pura." /></td> 

<td style='padding:10px;'><input class='form-control' type='text' name='bv[]' value=".$bv." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='nv[]' value=".$nv." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='pv[]' value=".$pv." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='bluv[]' value=".$bluv." /></td> 

<td style='padding:10px;'><input class='form-control' type='text' name='min[]' value=".$min." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='sku[]' value=".$sku." /></td> 
<td style='padding:10px;'><input class='form-control' type='text' name='bat[]' value=".$bat." /></td> 







    </tr>"; 
} 

echo "</table><input class='btn btn-md btn-danger btn-block searchbut' type='submit' value='Update'></form></div>"; 

這裏是在update_stock目前的嘗試(不工作):

// Sanatize the incoming! 
    $ba = $_POST['ba']; 
    $na = $_POST['na']; 
    $blua = $_POST['blua']; 
    $pina = $_POST['pina']; 
    $pura = $_POST['pura']; 
    $bv = $_POST['bv']; 
    $nv = $_POST['nv']; 
    $pv = $_POST['pv']; 
    $bluv = $_POST['bluv']; 
    $sku = $_POST['sku']; 
    $bat = $_POST['bat']; 
    $min = $_POST['pina']; 
    $id = $_POST['id']; 

$conn = mysqli_connect($servername, $username, $password, $dbname); 



    $stmt = mysqli_prepare($conn, 
    "UPDATE stock SET 
    BlackActive=?, 
    BeigeActive=?, 
    BlueActive=?, 
    PinkActive=?, 
    PurpleActive=?, 
    BlackVest=?, 
    BeigeVest=?, 
    PinkVest=?, 
    BlueVest=?, 
    Skulls=?, 
    Minnie=?, 
    Batman=? 
    WHERE sizing=?") or die(mysqli_error($conn)); 
    mysqli_stmt_bind_param($stmt, 'sssssssssssss', 
     $ba, $na, $blua, $pina, $pura, $bv, $nv, $pv, $bluv, $sku, $min, $bat, $id); 

    mysqli_stmt_execute($stmt); 

    //echo "update successful! YAY!<br />"; 
echo "update successful! YAY!<br />"; 
//close connection to db 
mysqli_close($conn); 

正如你可能會看到,這是一個簡單的有足夠的事情要做,我根本就無法擺脫困境。任何幫助,指針,實例或修復將十分讚賞獎勵;)

感謝

回答

0

請使用: 只需要循環您的文章數據這樣

foreach($_POST['ba'] as $ba){ 

// Sanatize the incoming! 
    //$ba = $_POST['ba']; no need to use it again 
    $na = $_POST['na']; 
    $blua = $_POST['blua']; 
    $pina = $_POST['pina']; 
    $pura = $_POST['pura']; 
    $bv = $_POST['bv']; 
    $nv = $_POST['nv']; 
    $pv = $_POST['pv']; 
    $bluv = $_POST['bluv']; 
    $sku = $_POST['sku']; 
    $bat = $_POST['bat']; 
    $min = $_POST['pina']; 
    $id = $_POST['id']; 

$conn = mysqli_connect($servername, $username, $password, $dbname); 

    $stmt = mysqli_prepare($conn, 
    "UPDATE stock SET 
    BlackActive=?, 
    BeigeActive=?, 
    BlueActive=?, 
    PinkActive=?, 
    PurpleActive=?, 
    BlackVest=?, 
    BeigeVest=?, 
    PinkVest=?, 
    BlueVest=?, 
    Skulls=?, 
    Minnie=?, 
    Batman=? 
    WHERE sizing=?") or die(mysqli_error($conn)); 
    mysqli_stmt_bind_param($stmt, 'sssssssssssss', 
     $ba, $na, $blua, $pina, $pura, $bv, $nv, $pv, $bluv, $sku, $min, $bat, $id); 

    mysqli_stmt_execute($stmt); 

    //echo "update successful! YAY!<br />"; 
echo "update successful! YAY!<br />"; 
//close connection to db 

} 
mysqli_close($conn); 
+0

我真的不理解你的答案,因爲所有做的事情都是對一種價值而不是其他方面。混亂!對不起,感謝您的幫助! 編輯:我只是試過它,它不工作,對不起! –

+0

您的一個帖子值「$ _POST ['ba']」爲我們提供了您更新的帖子數量。使用我的代碼後出現了什麼錯誤。 –

+0

我認爲你誤解了這個問題,$ ba $ na $ blua等是通過發送的值,那麼爲什麼要對其中的一個進行任何操作? &ba沒有被用作鑰匙或ID,我真的很困惑你的答案!所以很抱歉,如果這個問題複雜化... –