我有这个代码在我的网页上显示一个表格。表的内容与数据库链接。所以我从html表中的数据库中获取表。在每个(html)行的末尾,我得到了一个图像(icon-delete.png)。这得到$row[0]
的值(这是我的PKID所在的位置,所以它总是一个唯一的数字,它是一个自动提升。现在我想要清除我单击icon-delete.png按钮的各行使用PHP代码。该行也必须从数据库中删除。这是我的代码:
$con = mysql_connect('localhost', 'root', '');
if ($con) {
mysql_select_db('bieren', $con);
$result = mysql_query('SELECT * FROM brouwers');
echo '<form action="" method="post">';
echo '<table border="0" cellspacing=0>';
echo '<tr class="heads">
<th>brouwernr</th>
<th>brouwernaam</th>
<th>adres</th>
<th>postcode</th>
<th>gemeente</th>
<th>omzet</th>
</tr>';
$counter = 0;
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
if($counter % 2 == 0){
echo '<tr class="even">';
} else{
echo '<tr class="oneven">';
}
for($i = 0; $i <=6; $i++){
$counter ++;
echo '<td>';
echo $row[$i];
echo'</td>';
}
echo '<td> <input type="image" src="icon-delete.png" name="delete" value ="'.$row[0].'" /> </td>';
echo '</tr>';
}
} else {
echo 'Connectie niet geslaagd. Reden: ' . mysql_error() . '. Probeer opnieuw.';
}
echo '</table>';
echo '</form>';
if(isset($_POST))
{
$con = mysql_connect('localhost', 'root', '');
if ($con) {
mysql_select_db('bieren', $con);
$result = mysql_query('DELETE FROM brouwers
WHERE brouwers.brouwernr = "'.$row[0].'"');}
}
我的代码的最后一条规则是:WHERE brouwers.brouwernr = $row[0]
但这不是要删除的正确行。我还将展示我现在在html中获得的图像,以便您了解它必须做什么:
答案 0 :(得分:4)
我相信你原来问题的答案是你需要使用$ _POST ['delete']作为你要删除的行的id,这似乎已经被@ vlcekmi3很好地回答了。
但是,我确实相信我可以为您的原始问题添加一些额外的价值,并希望说服您改变主意使用旧的ext / mysql扩展名(现已弃用,并且长期以来不鼓励< / em>的)。我注意到你说你现在不想使用PDO。我认为错误的是,现在是停止使用旧的mysql API并开始使用较新的API的最佳时机,例如PDO或MySQLi。我试着告诉你为什么要使用更新的API,而不是试图给你不使用旧API的理由。
mysql_*
函数)已有将近15年的历史。我们大多数人都没有旧车。您是否重视代码并重视您的运输方式?该扩展是在MySQL 3.x版本中引入的,并且从那以后一直向后兼容MySQL的版本。由于这种无关的向后兼容性约束,API仍然缺乏支持所有数据库的新功能,而且大部分功能对于当今网络上的现代应用程序开发而言都是非常宝贵的。看了我为你列出的一些好处之后;我挑战你看看现在不切换的好处,并告诉我它们是否超过了切换的好处。我更有信心你无法得出这个结论,因为我甚至无法想到推迟你转向更新的API的单一好处。这个旧的API会促进糟糕的做法,其中一个你今天刚刚意识到你正在得到你的答案,并且不仅仅是因为使用ext / mysql多年来这些不良做法已经根深蒂固。即使我已经意识到在过去8年左右我从ext / mysql中汲取了多少不良习惯。但是,当我真正看到优势和劣势时(我花了最近两年的时间),我得出的结论是,优点远远超过了缺点。
作为一个简单的示例,让我们看看你的代码将会是多少漂亮,更容易阅读,更容易调试使用PDO。
/* This creates a new PDO object that holds the connection to your database */
$db = new PDO('mysql:dbname=bieren;host=localhost;charset=UTF-8', 'root', '');
/* This puts PDO into Exception Mode making it easier for you to catch errors */
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0); // turn off emulation
/* Create your HTML table */
echo "<table>";
// Look how easy it is to loop over the results
foreach($db->query('SELECT * FROM brouwers', PDO::FETCH_NUM) as $i => $row) {
echo ($i % 2 ? '<tr class="oneven">' : '<tr class="even">');
foreach ($row as $column) {
echo "<td>$column</td>";
}
echo "</tr>\n";
}
echo "</table>";
只要看看代码看起来有多精细和简洁,它实际上更容易阅读!你同意吗?