【问题标题】:Update Multiple SQL Rows in PHP 1 Submit更新 PHP 1 中的多个 SQL 行提交
【发布时间】:2016-01-22 18:19:00
【问题描述】:

在此先感谢,我真的被困在使用 SQL 更新多行的问题上。我已经尝试了多次迭代,但似乎只是遗漏了一些非常简单的东西,因此非常感谢任何帮助。

基本上我有一个大的前端表,显示表单中当前的项目库存,这是完美的,正确显示所有金额,我在底部有一个提交按钮,理想情况下希望更新所做的任何更改一键。我知道我遗漏了一些相当明显的东西,但我无法理解它。

这是表单显示代码:

// 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);

正如您可能看到的,这是一件非常简单的事情,我根本无法理解它。任何帮助、指示、示例或修复都将得到非常感激的回报;)

谢谢

【问题讨论】:

    标签: php html sql forms


    【解决方案1】:

    请使用这个: 只需要像这样循环你的帖子数据

    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);
    

    【讨论】:

    • 我不太明白您的回答,因为所做的只是将 foreach 放在一个值上,而不是放在其余值上。困惑!对不起,谢谢你的帮助!编辑:我只是在那里尝试过,但它不起作用,对不起!
    • 您的一个帖子值“$_POST['ba']”为我们提供了您提交更新的帖子数。应用我的代码后出现什么错误。
    • 我认为你误解了这个问题,$ba $na $blua 等是正在发送的值,那么为什么其中一个上的 foreach 会做任何事情呢? &ba 没有被用作密钥或 id,我真的被你的回答弄糊涂了!很抱歉,如果让问题复杂化......
    • 我假设您有一个表单和一个提交按钮。您有多个 $ba 字段要通过单击提交来更新。
    • 是的。第一个代码 sn-p 中的 1 个表单,带有 1 个提交按钮。但是,如果我们只为每个值添加一个值,它不会只遍历其他值。
    猜你喜欢
    • 1970-01-01
    • 2016-06-06
    • 2017-10-08
    • 2015-01-28
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多