[英]delete a row on mysql with php issue
我试图在php上删除一行(我做到了),但总是删除最后一行,我知道为什么...因为每次我刷新或输入页面时,每次我得到id =“ lastrow”时,我的问题就是不知道为什么每次我都得到最后一行ID ...`$ query =“ SELECT * FROM ph”; $ rs = mysql_query($ query);
while ($ph = mysql_fetch_array($rs)) {
echo utf8_encode("
<tr class='etapastext'>
<td >
".$ph['name']."
</td>
<td>
<input type='submit' name='".$ph['id']."' value='Eliminar' >
<input type='hidden' name='name' value='".$ph['id']."'>
</td>
"); }`
然后我可以访问要删除的商品的ID,使用此代码
$query = "DELETE FROM ph WHERE ph.id = '".$_POST['name']."'";
mysql_query($query);
我正在使用$_POST['name']
因为这是一种表单,所以我不知道即时通讯正在执行最佳方法还是即时通讯执行不佳
我回显了$query
我DELETE FROM ph WHERE ph.id = '24'
那里DELETE FROM ph WHERE ph.id = '24'
当“ 24”始终是表的最后一行时
作为定义,每种输入类型都应以一种形式使用唯一的名称。您正在做的是使用
name="name"
因此从技术上讲,当您的表单将被提交时,最后一个输入名称为name ='name'的输入类型将与表单一起发送。 那就是你做错了。 我不是专业人士,但根据我的说法,您有3种选择可以删除数据库表中的一行。
使用get方法发送带有url的值(最佳方式),例如
www.xyz.com/delete.php?id=5
(会弄乱您的代码)为每种输入类型使用单独的表单并提交按钮,最重要的是,您的表单应以td开始
您将在运行时使用javascript创建一个表单,并根据选定的行值填充表单并提交表单(如果您想使用post,则建议使用该表单,因为这会使您的代码整洁)
希望对你有帮助
每个html.tr.td需要一个表格
因为您提交了整个结果,所以当form.input.name相同时,最后一个总是覆盖以前的任何结果。
除非您将input.name更改为其他名称
while ($ph = mysql_fetch_array($rs)) {
echo '
<form ....>
<tr class="etapastext">
<td>', $ph['name'], '</td>
<td>
<input type="submit" value="Eliminar">
<input type="hidden" name="name" value="', $ph['id'], '">
</td>
</tr>
</form>
';
)
从目前为止我所看到的,您的<tr>
标记并未在while()
循环内关闭。 我假设对于$ph
每个数组项,您希望它们每个都有自己的表行。
下面的固定代码
while ($ph = mysql_fetch_array($rs)) {
echo utf8_encode("
<tr class='etapastext'>
<td >
".$ph['name']."
</td>
<td>
<input type='submit' name='".$ph['id']."' value='Eliminar' >
<input type='hidden' name='name' value='".$ph['id']."'>
</td>
</tr>
");
}
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.