0

以下は、チェックボックスを選択してデータベースレコードを削除しようとしているコードの一部です。ループは、チェック ボックスと共にデータを取得する方法です。(コード 1:) と (コード 2:) は、選択したレコードを削除しようとしている場所です。

ループでわかるように、データベースには 3 つのフィールドがあり、レコードを削除するとき、コード 2 は最初のレコードである との一致のみをチェックしますbname。ただし、私の問題は、システムから削除する前に、3 つのデータベース フィールドがすべて一致しているかどうかを確認する必要があることです。問題をさらに説明するには;

bname | bvariant | bsku
-----------------------
apple |red       | 20g
apple |green     | 30g

現在のコードは、"apple" との一致を確認し、2 つのデータ行をすべて削除しています。しかし、ユーザーが行番号 1 を選択した場合、3 つのフィールドすべてについてデータベースとの一致をチェックするようにコードを調整する必要があります。この場合、apple、red、20g のみが削除されます。コード 2に追加AND bvariant='$wec2' AND bsku='$wec3'"しましたが、動作しないようです。助けてください。

コード 1:

while ($reK = mysqli_fetch_array($runBrands))
{
$wec = $reK['bname']; $wec2 = $reK['bvariant']; $wec3 = $reK['bsku'];
    echo "<tr class='brndTab'>";
    echo "<td class='brndTab'>".$reK["bname"]."</td>";
    echo "<td class='brndTab'>".$reK["bvariant"]."</td>";
    echo "<td class='brndTab1'>".$reK["bsku"]."</td>";
    echo "<td class='brc'><input type='checkbox' name='delz[]' value='$wec' ></td>";
    echo "</tr>";
}

コード 2:

if(isset($_POST['delz'])) 
{
foreach($_POST['delz'] as $we)
  {
$Mo = mysqli_query($db,"DELETE FROM brands WHERE bname ='$we' AND bvariant='$wec2' AND     bsku='$wec3'");
  }
}
4

1 に答える 1

0

変数$wec2と$wec3は、コード2では初期化されていません。コード1では、これらを非表示の値として送信する必要があります。

しかし、以前のコメンテーターがすでに示唆したように。最善の方法は、主キーを使用することです。

于 2013-01-27T09:32:47.923 に答える