【问题标题】:Updating Mysql Row with array in php [closed]在php中使用数组更新Mysql Row [关闭]
【发布时间】:2020-05-16 19:20:29
【问题描述】:

我的 cookie 是这样的;

    Array
(
    [1] => 1
    [12] => 1
)

我的表单输入像; (adet = 数量,idler = 英文ID)

<?php $postvalue = $_COOKIE['sepet'];
foreach($postvalue as $id =>$adet)
{
    echo '<input type="hidden" name="idler[]" value="'. $id. '">';
     echo '<input type="hidden" name="adet[]" value="'. $adet. '">';

} ?>

还有我的php文件;

if(isset($_POST['submit'])){
$adet = $_POST['adet'];
$idler = $_POST['idler'];

$sql = "UPDATE student SET urun_stok=:stok WHERE urun_id=:idler";
$query = $db->prepare($sql);
foreach( $idler as $key => $n ){

    $query->bindparam(':idler', $idler[$key]);
    $query->bindparam(':adet', $adet[$key]);
    $query->execute();
}

}

模态js;

Modal Confirm
*/
$(document).on('click', '.modal-confirm', function (e) {
    e.preventDefault();
    $.magnificPopup.close();

 $.ajax({
    type: "POST",
    url: "ge.php",
    cache:false,
    data: $('#modalAnim').serialize(),

});


    new PNotify({
        title: 'Success!',
        text: 'Satış Başarılı.',
        type: 'success'
    });
});

我对 php 有点陌生,所以我试图通过 urun_stok 行上的 id 更新我的数据库行。 所以我猜我做错了:)

【问题讨论】:

  • Adet 和 stok 是不同的词
  • 我已经添加了模态js,可能问题与js有关。

标签: php mysql arrays ajax foreach


【解决方案1】:

在查询绑定参数中检查列名,如下更改

foreach( $idler as $key => $n ){
    $sql = "UPDATE table SET urun_stok=:adet WHERE urun_id=:idler";
    $query = $con->prepare($sql);
    $query->bindparam(':idler', $idler[$key]);
    $query->bindparam(':adet', $adet[$key]);
    $query->execute();
}

【讨论】:

  • 实际上这是我最后一次保存我不小心发送旧版本^^这一定是正确的但不知何故我无法插入到数据库。我已经用单个插入代码进行了更改,但我不知道为什么我不能在 foreach 循环中......
  • 哦,好吧!将 sql 查询放在 foreach 循环中,意味着 $sql 和 $query 变量都在循环中
  • nop 不工作 :( 也许它的形式 foreach 是问题?
  • $adet = $_POST['adet'];$idler = $_POST['idler']; 变量得到的输出是什么,是数组值吗?
  • Array ( [0] => 1 ) 和 Array ( [0] => 2 ) 所以问题就在这里 :) 但是我该如何解决,而且 sql 代码也不起作用,我试过没有变量但代码不起作用似乎我们在这里有多个sos情况:D