...

View Full Version : Cannot delete a field in MySQL using PHP!



angelali
02-21-2012, 02:03 PM
I have made a simple form where users who have been subscribed and unsubscribe by inserting their email address.

In my database using PHPMyAdmin, my database to store the emails is 'Links', the table is 'email' and the fields are the 'id' and 'emailaddress'.

What I have tried is making a text input field, where the user ill insert his or her email address, to unsubscribe on the website. As a result the user's field for his or her email address will be delete in the database which is saving the emails for all users who have subscribed.

My HTML codes are:


<p>Subscribe for newsletters:</p>
<img src="images/k-newsletter-icon.png" width="96" height="96" alt="subscri"/>
<form action="index.php" method="post">
<input type="text" size="25" placeholder="Your email address..." name="enter"/>
<input class="submit" type="submit" value="Subscribe" name="subscribe"/>
</form>

My PHP codes are:


<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

$email = $_POST['enter'];
@mysql_connect ('localhost', 'root', '') or die ('Error');
@mysql_select_db ('links') or die ('Error');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Not an email";
return false;
} else {
mysql_query("DELETE FROM email WHERE emailaddress ='$email'");
echo "deleted";
}
}
?>

When I test it,it is not working, as I see the email which was saved, is still in the database! Help!

Fou-Lu
02-21-2012, 03:14 PM
Does the script print anything to the screen?
Also, enable your error reporting:


ini_set('display_errors', 1);
error_reporting(E_ALL);

Nightfire
02-21-2012, 03:17 PM
Try changing


mysql_query("DELETE FROM email WHERE emailaddress ='$email'")

to


mysql_query("DELETE FROM email WHERE emailaddress ='$email'") or die(mysql_error());
and see if that says what's wrong

angelali
02-21-2012, 03:29 PM
Yes, error_reporting is ON by default, I just checked it!

@NightFire, I changed the code to what you told me, again here, it seems the email is not being deleted in PHPMyAdmin when I refresh! :(

angelali
02-21-2012, 03:31 PM
Here are codes including what you suggested me, but the problem is the same! Is this because my emailaddress field in the table is UNIQUE KEY?


<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = $_POST['enter'];
@mysql_connect ('localhost', 'root', '') or die ('Error');
@mysql_select_db ('links') or die ('Error');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Not an email";
return false;
} else {
mysql_query("DELETE FROM email WHERE emailaddress ='$email'") or die(mysql_error());
echo "deleted";
}
}
?>

Fou-Lu
02-21-2012, 04:04 PM
Error reporting on doesn't necessarily mean that its on for all errors.
It would be preferable that the key is unique. Otherwise you can potentially delete multiple records; both are valid for a design depending on purpose. It is possible that you are violating a key constraint not set to cascade which will cause it to reject the deletion.

What of output, is it blank?

angelali
02-21-2012, 04:27 PM
It just tells me that the email has been deleted, but when I refresh the database in PHPMyAdmin, it is still there.. I mean it has not been deleted at all..

Fou-Lu
02-21-2012, 05:40 PM
Okay, so or die(mysql_error()); produces no failure results. The query is therefore successful indicating a deficiency with the data involved.
Now you check how many were deleted:


mysql_query("DELETE FROM email WHERE emailaddress ='$email'") or die(mysql_error());
printf("Deleted %d records." . PHP_EOL, mysql_affected_rows());

How many does it say were deleted? If its 0, there is no matching emailaddress to the given $email. Capture the query into a variable and print that out instead.

angelali
02-21-2012, 05:44 PM
I have already done it. It is working now. It was a problem of a dot in the database. When performing the INSERT code, I included a dot in it thus thats is why the email was not deleting as it did not match. Thank you to all of you who have helped me! :)



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum