错误从php删除行

时间:2014-02-20 22:30:06

标签: php html5

我有一个包含输入的表单:mail 当数据库中存在电子邮件的值时,我想从我的数据库中删除行 但它不起作用 我的HTML是

<form action="delete.php" method="post">
<h3>Email:</h3><input type="text" name="email" required/>
<input type="submit" value="Delete" />
</form>

我的PHP页面是

<?php
include("connexion.php");
$email=$_POST['email'];
$req='DELETE FROM `personne` WHERE email="$email";';
if(mysql_query($req))
{
echo 'Delete with succes ';
}
else
echo 'error';

所以它显示'删除成功',但是当我检查数据库没有任何改变时

3 个答案:

答案 0 :(得分:3)

在撇号括起的字符串中,$ {01}变量不会替换$ email。

替换它

$email

"DELETE FROM `personne` WHERE email='$email';"; 返回true,因为查询成功:它删除了零行。见the reference

  

mysql_query()在成功时返回资源,或在出错时返回FALSE。

...并且资源被评估为true,因为PHP是弱类型语言。

如果要检查已删除的行数,请使用mysql_query($req)。但由于mysql_affected_rows()函数已弃用,我建议您转到mysqli

还仔细阅读TimWolla对你的回答的评论。这次零电子邮件被删除了,但是如果你把这个条件搞得一团糟,你可以轻松地从人格表中删除所有记录。如果添加mysql_*

,您可以减少危险

答案 1 :(得分:2)

$req = "DELETE FROM personne
    WHERE   email = '" . $email . "';";

请考虑保护电子邮件变量以避免SQL注入,如果可能,请切换到PDO。

关于你的回答(我无法添加评论):

mysql_query向查询结果返回正的MySQL结果资源,或者在出错时返回FALSE。对于INSERT / UPDATE / DELETE查询,该函数也返回TRUE / FALSE以指示成功/失败。

由于您的查询没有失败,该函数返回true。

答案 2 :(得分:0)

基本PHP语法:' - 引用的字符串不插入变量:

$req="DELETE FROM `personne` WHERE email='$email';";

请注意"'引号的反转。请注意,您很容易受到SQL injection attacks

的攻击