0

誰かがここで私を助けてくれることを願っています。関数を正しく呼び出していないと思います。データベースからいくつかのデータを取得しようとしており、取得する各アイテムに削除リンクが添付されているため、削除をクリックすると、削除機能を持つ特定のアイテムが削除されます。

データベースからアイテムを取得するための私のコードは次のとおりです。

<?php
$con = mysql_connect("localhost","root","");
mysql_select_db("uloaku", $con);
$count = 1;
$y = mysql_query("SELECT * FROM transaction");
if(mysql_num_rows($y) != 0){

echo "<table bgcolor=\"white\" width=\"1000\" bordercolor=\"grey\" border=\"5\" >";
echo "<tr>
<td align=\"center\">No</td>
<td align=\"center\">Date</td>
<td align=\"center\">Current Balance</td>
<td align=\"center\">Avaliable Balance</td>
<td align=\"center\">Account Status</td>
<td align=\"center\">Delete Account</td>

</tr>";

while ($z = mysql_fetch_array($y, MYSQL_BOTH)){
        echo "<tr>
        <td align=\"center\">".$count++."</td>
        <td align=\"center\">".$z[1]."</td>
        <td align=\"center\">".$z[2]."</td>
        <td align=\"center\">".$z[3]."</td>
        <td align=\"left\" width=\"300\">".$z[4]."</td>
        <td><a href=\"delete.php\">delete</a></td>
        </tr>";
    }
    echo "</table>";
    }
?>

そして、削除する私のコード

<?php
session_start();
$con = mysql_connect("localhost","root","");
mysql_select_db("uloaku", $con);
$id = $_GET['id'];
$sql = mysql_query("DELETE FROM transaction WHERE id='$id' LIMIT 1") or die   (mysql_error());
header("Location: vacct.php");
?>

ここでロジックを見逃していることはわかっています。誰かが私に指示するか、簡単な方法を教えてくれることを願っています。現時点では、データベースからアイテムを正常に取得できますが、唯一の問題は、削除ボタンがタップされるたびに削除機能を適用できることです。

4

4 に答える 4

1

id削除リンクをクリックしたときに渡す必要があります。

<a href=\"delete.php?id=$z[theIdKey]\">
于 2012-09-09T14:10:19.140 に答える
0
<td><a href=\"delete.php\">delete</a></td>

削除するIDをdelete.phpスクリプトにどのように渡していますか?

于 2012-09-09T14:10:16.443 に答える
0

変化する:

<td><a href=\"delete.php\">delete</a></td>

に:

<td><a href=\"delete.php?id=".$z[0]."\">delete</a></td>

$z[0] が ID の場合。

delete.php で、バッククォートを使用して「transaction」という単語もエスケープしてください。

DELETE FROM `transaction` WHERE id=123

これは、「transaction」が予約済みの mysql キーワードであるためです。

SQL インジェクションについてもお読みください。

于 2012-09-09T14:12:18.940 に答える
0

以下のコードを使用してください。検証と暗号化を追加しました

<?php
$con = mysql_connect("localhost","root","");
mysql_select_db("uloaku", $con);
$count = 1;
$y = mysql_query("SELECT * FROM transaction");
if(mysql_num_rows($y) != 0){

echo "<table bgcolor=\"white\" width=\"1000\" bordercolor=\"grey\" border=\"5\" >";
echo "<tr>
<td align=\"center\">No</td>
<td align=\"center\">Date</td>
<td align=\"center\">Current Balance</td>
<td align=\"center\">Avaliable Balance</td>
<td align=\"center\">Account Status</td>
<td align=\"center\">Delete Account</td>

</tr>";

while ($z = mysql_fetch_array($y, MYSQL_BOTH)){
        echo "<tr>
        <td align=\"center\">".$count++."</td>
        <td align=\"center\">".$z[1]."</td>
        <td align=\"center\">".$z[2]."</td>
        <td align=\"center\">".$z[3]."</td>
        <td align=\"left\" width=\"300\">".$z[4]."</td>
        <td><a href=\"delete.php?id=".base64_encode($z[0])."\">delete</a></td>
        </tr>";
    }
    echo "</table>";
    }
?>

code to delete

<?php
session_start();
$con = mysql_connect("localhost","root","");
mysql_select_db("uloaku", $con);
$id = base64_decode($_GET['id']);
if(!empty($id)){
$sql = mysql_query("DELETE FROM transaction WHERE id='$id' LIMIT 1") or die   (mysql_error());
}
header("Location: vacct.php");
?>
于 2012-09-09T14:15:57.763 に答える