2

我试图从我的数据库中删除一行,但它似乎并没有被删除。有什么建议为什么数据库没有更新?代码如下:

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

3 回答 3

1

改变这个:

'DELETE FROM tbl WHERE email = :e'

'DELETE FROM tbl WHERE email = ":e"'
于 2013-06-01T18:32:21.707 回答
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))

于 2013-06-01T19:35:41.420 回答
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);
    }
?>
于 2013-06-06T20:44:24.090 回答