我正在尝试从我的数据库中删除一行,但它似乎没有删除。有关数据库未更新的任何建议吗?代码如下:
<form method="get">
<table>
<tr><td>Email Address </td>
<td><input name="e" type="text" size="25"></td>
</tr>
</table>
<input name="delete" type="submit" value="Remove"/>
</form>
<?php
if (isset($_GET['delete'])) {
$query = oci_parse($conn,'DELETE FROM tbl WHERE email = :e');
oci_bind_by_name($query, ':e', $_GET['e']);
oci_execute($query);
}
?>
答案 0 :(得分:1)
改变这个:
'DELETE FROM tbl WHERE email = :e'
到
'DELETE FROM tbl WHERE email = ":e"'
答案 1 :(得分:1)
根据文档,没有必要用引号包围绑定变量:docs
可能发生的事情:您尝试匹配的字符串与数据库中的字符串略有不同。像“example@example.com”和“EXAMPLE@EXAMPLE.COM”这样的领先空间。实现删除的方式,两个字符串必须完全相等才能进行删除。
我建议你尝试这样的事情:
DELETE FROM tbl WHERE trim(upper(email)) = tirm(upper(:e))
或者,确保您桌面上的所有电子邮件列都已正确存储,并仅在绑定变量部分使用该功能:
DELETE FROM tbl WHERE email = trim(upper(:e))
答案 2 :(得分:0)
如上所述:
<form method="get">
<table>
<tr><td>Email Address </td>
<td><input name="e" type="text" size="25"></td>
</tr>
</table>
<input name="delete" type="submit" value="Remove"/>
</form>
<?php
if (isset($_GET['delete'])) {
$query = oci_parse($conn,"DELETE FROM tbl WHERE upper(email) = trim(upper(':e'))");
oci_bind_by_name($query, ':e', $_GET['e']);
oci_execute($query);
}
?>