数据不从数据库中删除

时间:2013-06-01 18:26:24

标签: php sql oracle

我正在尝试从我的数据库中删除一行,但它似乎没有删除。有关数据库未更新的任何建议吗?代码如下:

<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);
    }
?>

3 个答案:

答案 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);
    }
?>