1

私はこのテーブルを持っているアプリを作っています:

<?php
require_once 'Connect2db3.php';
?>    
<form>    
<fieldset>
<article class="rondehoeken"> 
<header>
    <div class="streep1"></div>
    <div class="streep2"></div>
    <div class="streep3"></div>
    <div class="streep4"></div>
    <div class="streep5"></div>
    <h1 id="artikel-titel" >Op Vooraad</h1>
</header>

<div id="artikel-container">    
<table class="table 1">
<thead>
 <title>Inventory Grid.html</title>
    <meta charset = "UTF-8" />
    <style type = "text/css">
    table, td, th {
      border: 1px solid black;
    } 
    </style>
</thead>    
<tbody>
 <?php
$con=mysqli_connect("localhost","root","admin","inventarisdb");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM BCD");

echo "<table border='0'>
<tr>
<th>Categorie</th>
<th>SerieNummer</th>
<th>MacAdress</th>
<th>ProductCode</th>
<th>Prijs</th>
<th>RekNummer</th>
<th>PaletNummer</th>
<th>Hoeveelheid</th>
<th>Aantekeningen</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Categorie'] . "</td>";
  echo "<td>" . $row['SerieNummer'] . "</td>";
  echo "<td>" . $row['MacAdress'] . "</td>";
  echo "<td>" . $row['ProductCode'] . "</td>";
  echo "<td>" . $row['Prijs'] . "</td>";
  echo "<td>" . $row['RekNummer'] . "</td>";
  echo "<td>" . $row['PaletNummer'] . "</td>";
  echo "<td>" . $row['Hoeveelheid'] . "</td>";
  echo "<td>" . $row['Aantekeningen'] . "</td>";
  echo '<td><input type="hidden" class="entryid" name="id" value='.$row['ID'].' /><a href="#" class="delete">delete</a></td>';
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>

</article>
</fieldset>
</form>

ヘッダー内:

フォームを削除:

<?php
$db = array (
    'host' => 'localhost',
    'user' => 'root',
    'pass' => 'admin',
    'dbname' => 'inventarisdb'
);

if(!mysql_connect($db['host'], $db['user'], $db['pass']))
{
    trigger_error('Fout bij verbinden: '.mysql_error());
}
elseif(!mysql_select_db($db['dbname']))
{
    trigger_error('Fout bij selecteren database: '.mysql_error());
}
else
{
    $sql = "SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'";
    if(!mysql_query($sql))
    {
        trigger_error('MySQL in ANSI niet mogelijk');
    }
}

$id = $_GET['id'];
$sql="DELETE FROM BCD WHERE id='$Categorie', '$SerieNummer', '$MacAdress', '$ProductCode', '$Prijs', '$RekNummer','$PaletNummer' ,'$Hoeveelheid', '$Aantekeningen'";
?> 

このテーブルは、別のテーブルからデータを検索し、そのテーブルの行をデータベースから削除するオプションも提供します。

データベースから実際に削除されるデータを除いて、このテーブルで説明したことはすべてこのスクリプトで機能します。削除を押すと、削除アクションが実行され、行を削除しようとしているというプロンプトが表示されます。テーブルから削除しますが、データベースをチェックインするか、単にテーブルでページを更新すると、その行はまだそこにあり、削除されていません

なぜこれが起こっているのか、何をすべきか考えていますか? または、どうすれば簡単にできますか?

4

4 に答える 4

3

これはうまくいかないと思います

$sql="DELETE FROM BCD WHERE id='$Categorie', '$SerieNummer', '$MacAdress', '$ProductCode', '$Prijs', '$RekNummer','$PaletNummer' ,'$Hoeveelheid', '$Aantekeningen'";

パラメータをANDまたは OR で区切る必要があります。成功した削除条件に応じて、コンマは必要なく、毎回列名も指定します。

何かのようなもの

$sql="DELETE FROM BCD WHERE id='$Categorie' AND  serial_number='$SerieNummer', //etc

このような値の範囲ではなく、主キーに基づいて削除する方が良いでしょう

また、mysql_ 関数を使用しないでください。パラメーター化されたクエリで mysqli または PDO を使用してください。

于 2013-08-22T07:22:51.997 に答える
1

非表示の入力には名前が付けられid、 を呼び出し$id = $_GET['id']ています。クエリにある他のすべての変数は、定義した場合に定義した場所を示していないため、未定義です。

交換:

$id = $_GET['id'];
$sql="DELETE FROM BCD WHERE id='$Categorie', '$SerieNummer', '$MacAdress', '$ProductCode', '$Prijs', '$RekNummer','$PaletNummer' ,'$Hoeveelheid', '$Aantekeningen'";

と:

$id = intval($_GET['id']); // assuming your id column is integer type.
$sql="DELETE FROM BCD WHERE id=$id";

mysql_また、関数は非推奨であることにも注意してください。mysqliまたはのいずれかを使用する必要がありますpdo

于 2013-08-22T07:29:42.537 に答える