php - 从多个复选框中删除过程错误

标签 php mysql sql

我有一百万行数据,但主键上没有不同的数据,我想从具有多列的复选框表单中删除多行,但失败了。

如果我尝试用作数据库插入,它就可以工作。

以下是错误详细信息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( "71", "03", "090", "005", "001", ' at line 13

HTML 代码

 <input type="hidden" name="bayar[NM_WP_SPPT][]" value="<?=$NM_WP_SPPT?>">
                <input type="hidden" name="bayar[KD_PROPINSI][]" value="<?=$itung['KD_PROPINSI']?>">
                <input type="hidden" name="bayar[KD_DATI2][]" value="<?=$itung['KD_DATI2']?>">
                <input type="hidden" name="bayar[KD_KECAMATAN][]" value="<?=$itung['KD_KECAMATAN']?>">
                <input type="hidden" name="bayar[KD_KELURAHAN][]" value="<?=$itung['KD_KELURAHAN']?>">
                <input type="hidden" name="bayar[KD_BLOK][]" value="<?=$itung['KD_BLOK']?>">
                <input type="hidden" name="bayar[NO_URUT][]" value="<?=$itung['NO_URUT']?>">
                <input type="hidden" name="bayar[KD_JNS_OP][]" value="<?=$itung['KD_JNS_OP']?>">
                <input type="hidden" name="bayar[THN_PAJAK_SPPT][]" value="<?=$tahun?>">
                <input type="hidden" name="bayar[TGL_JATUH_TEMPO_SPPT][]" value="<?=$itung['TGL_JATUH_TEMPO_SPPT']?>">
                <input type="hidden" name="bayar[PEMBAYARAN_SPPT_KE][]" value="<?=$itung['PEMBAYARAN_SPPT_KE']?>">
                <input type="hidden" name="bayar[KD_KANWIL_BANK][]" value="<?=$itung['KD_KANWIL_BANK']?>">
                <input type="hidden" name="bayar[KD_KPPBB_BANK][]" value="<?=$itung['KD_KPPBB_BANK']?>">
                <input type="hidden" name="bayar[KD_BANK_TUNGGAL][]" value="<?=$itung['KD_BANK_TUNGGAL']?>">
                <input type="hidden" name="bayar[KD_BANK_PERSEPSI][]" value="<?=$itung['KD_BANK_PERSEPSI']?>">
                <input type="hidden" name="bayar[KD_TP][]" value="<?=$itung['KD_TP']?>">
                <input type="hidden" name="bayar[DENDA_SPPT][]" value="<?=$jumlah_tunggakan?>">
                <input type="hidden" name="bayar[SEJUMLAH_RP][]" value="<?=$jumlah_yg_harus_dibayar?>">
                <input type="hidden" name="bayar[JML_SPPT_YG_DIBAYAR][]" value="<?=$itung['PBB_YG_HARUS_DIBAYAR_SPPT']?>">
                <input type="hidden" name="bayar[TGL_PEMBAYARAN_SPPT][]" value="<?=date('Y-m-d', time())?>">
                <input type="hidden" name="bayar[TGL_REKAM_BYR_SPPT][]" value="<?=date('Y-m-d', time())?>">
                <input type="hidden" name="bayar[NIP_REKAM_BYR_SPPT][]" value="<?="060000000"?>">

从数据库中删除的代码

$values = array();
for ($i=0; $i < count($_POST['bayar']['THN_PAJAK_SPPT']); $i++) {
  $values[] = '(
    "'.$_POST['bayar']['KD_PROPINSI'][$i].'",
    "'.$_POST['bayar']['KD_DATI2'][$i].'",
    "'.$_POST['bayar']['KD_KECAMATAN'][$i].'",
    "'.$_POST['bayar']['KD_KELURAHAN'][$i].'",
    "'.$_POST['bayar']['KD_BLOK'][$i].'",
    "'.$_POST['bayar']['NO_URUT'][$i].'",
    "'.$_POST['bayar']['KD_JNS_OP'][$i].'",
    "'.$_POST['bayar']['THN_PAJAK_SPPT'][$i].'",
    "'.$_POST['bayar']['PEMBAYARAN_SPPT_KE'][$i].'",
    "'.$_POST['bayar']['KD_KANWIL_BANK'][$i].'",
    "'.$_POST['bayar']['KD_KPPBB_BANK'][$i].'",
    "'.$_POST['bayar']['KD_BANK_TUNGGAL'][$i].'",
    "'.$_POST['bayar']['KD_BANK_PERSEPSI'][$i].'",
    "'.$_POST['bayar']['KD_TP'][$i].'",
    "'.$_POST['bayar']['DENDA_SPPT'][$i].'",
    "'.$_POST['bayar']['JML_SPPT_YG_DIBAYAR'][$i].'",
    "'.$_POST['bayar']['TGL_PEMBAYARAN_SPPT'][$i].'",
    "'.$_POST['bayar']['TGL_REKAM_BYR_SPPT'][$i].'",
    "'.$_POST['bayar']['NIP_REKAM_BYR_SPPT'][$i].'"
  )';
}


$delete = "DELETE FROM PEMBAYARAN_TES WHERE (KD_PROPINSI , KD_DATI2 , KD_KECAMATAN , KD_KELURAHAN , KD_BLOK , NO_URUT , KD_JNS_OP ,
                THN_PAJAK_SPPT , PEMBAYARAN_SPPT_KE , KD_KANWIL_BANK , KD_KPPBB_BANK , KD_BANK_TUNGGAL , KD_BANK_PERSEPSI , KD_TP ,
              DENDA_SPPT , JML_SPPT_YG_DIBAYAR , TGL_PEMBAYARAN_SPPT , TGL_REKAM_BYR_SPPT , NIP_REKAM_BYR_STTS) = " . implode(',', $values);

mysqli_query($conn, $delete) or die (mysqli_error($conn));
}

这个错误是什么意思?以及如何解决?

如果“删除查询”不能这样,那么从具有“where multiple columns name”的复选框中删除多行的其他方法是什么?

最佳答案

如果选中,HTML 复选框表单元素将返回“on”,如果未选中,则不返回任何内容。因此,要查看复选框是否已选中,您必须使用 isset() 命令(如果您事先知道应该/不应该出现哪个复选框)并相应地检查数据库列。在这里,您仅收到选中的复选框并为其设置 where 子句。如果您需要为未选中的复选框设置 IS NOT,那么您必须提前列出它们。

$where=[];
$bayars=$_POST['bayar'];//gets 2D array
foreach($bayars as $midbayars)
{
  foreach($midbayars as $key=>$bayar)
  {
    $where[]=$key.'='.1; //or whatewer is in database
  }
}

$SQL='DELETE FROM PEMBAYARAN_TES WHERE '.implode(' AND ',$where)

关于php - 从多个复选框中删除过程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38691320/

相关文章:

php - 在 Controller 中将 HTTPS 重定向到 HTTP

php - 如何在 MAMP 中访问 PDO?

mysql - 自动将 mySQL 查询导入 Google 表格?

mysql - 在 "mysql -u username -p -A"命令中 'A'代表什么?

MySQL 从 CSV 数据加载 NULL 值

mysql - 从多个类别进行查询

mysql - 如何使用另一个列表中的值更新一个列表中具有 id 的行

php - Laravel 保护表单隐藏字段和 url

mysql - 不按 ID 排序时获取上一行 ID

php - 获取数据库表 typo3 4.6.1 页面上的所有记录