2013-12-15 4 views
0

Я пытаюсь создать страницу, которая позволит пользователю ввести номер сотрудника через форму, и когда они нажмут кнопку «удалить», она удалит соответствующую запись. База данных называется «Crosshill», таблица называется «Сотрудники», а поле, которое я хочу использовать, - «employeeid».Используйте простую форму и PHP для удаления записи mySQL.

Кажется, что подключается нормально к БД, но код ниже не работает. Когда вы нажмете кнопку «Удалить», она возвращает ошибку:

Не удалось удалить данные: У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи «WHERE EmployeeID =» в строке 1 BLOCKQUOTE


<html> 
<head> 
<title>Delete an Employee</title> 
</head> 
<body> 

<h3>Enter the Employee Number below to delete a record</h3> 

<?php 
if(isset($_POST['delete'])) 
{ 
$dbhost = '####'; 
$dbuser = '####'; 
$dbpass = '####'; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

$employeeid = $_POST['employeeid']; 

$sql = "DELETE Employees ". 
     "WHERE employeeid = $employeeid" ; 

mysql_select_db('Crosshill'); 
$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die('Could not delete data: ' . mysql_error()); 
} 
echo "Deleted data successfully\n"; 
mysql_close($conn); 
} 
else 
{ 
?> 
<form method="post" action="<?php $_PHP_SELF ?>"> 
<table width="400" border="0" cellspacing="1" cellpadding="2"> 
<tr> 
<td width="100">Employee ID</td> 
<td><input name="employeeid" type="number" id="employeeid"></td> 
</tr> 
<tr> 
<td width="100"> </td> 
<td> </td> 
</tr> 
<tr> 
<td width="100"> </td> 
<td> 
<input name="delete" type="submit" id="delete" value="Delete"> 
</td> 
</tr> 
</table> 
</form> 
<?php 
} 
?> 
</html> 
+0

огромная дыра в безопасности в этот код –

+0

Пропущенный ОТ слово. Написание '$ employeeid = (int) $ _ POST ['employeeid'];' исправит это отверстие безопасности. Но я надеюсь, что это только тестовая цель ... –

+0

Не могли бы вы уточнить? Это только для тестового проекта, но я все еще учился и хотел бы знать, как предотвратить это. – WJB

ответ

6

Это DELETE FROM <table> WHERE <condition>, то FROM отсутствует в запросе.

+0

Большое спасибо! Он работает сейчас. Я добавлю точки, как только разрешит мой представитель. Цените помощь! – WJB

0

Вам не хватает «из» после удаления .. Это должно быть как DELETE from Employees WHERE.

Чтобы избежать подобных ситуаций, всегда делайте одно, просто повторяйте запрос sql и используйте «exit» после этого, чтобы прекратить дальнейшее выполнение программы.

Скопируйте запрос из браузера и запустить то же самое в PHPMyAdmin или любой другой инструмент вы используете ..

Эта практика поможет вам выяснить причину проблемы ..

+0

Большое спасибо! Он работает сейчас. Я добавлю точки, как только разрешит мой представитель. Цените помощь! – WJB

+0

В любое время .................. :) –

Смежные вопросы