2016-05-01 7 views
0

Я пытаюсь удалить строку в базе данных SQL по id. Я нашел здесь вопросы, связанные с этим, но ничего не работает, возможно, потому, что моя страница заполнена (динамически?) На основе выбора переменной. Строки отображаются на моей странице на основе раскрывающегося списка (locationlab), и после каждой строки у меня есть кнопка удаления. It looks like this.SQL Delete Row по id

У меня есть идентификатор, временно отображаемый в конце строки, просто убедитесь, что код видит переменную (& он делает!).

Код для заполнения страницы выглядит следующим образом:

<?php 
    $locationlab = $_POST[locationlab]; 
    $sql = "SELECT * FROM lab WHERE locationlab LIKE '{$locationlab}'"; 
    echo($locationlab); 
    $result = $conn->query($sql); 
    if ($result->num_rows > 0) { 
while($row = $result->fetch_assoc()) { 
echo' 
    <table> 
    <form action=testpage2.php method=post> 
    <td width="10%"><input type=text name=make value='. $row["make"].'></td> 
    <td width="10%"><input type=text name=model value='. $row["model"].'></td> 
    <td width="20%"><input type=text name=hostname value='. $row["hostname"].'></td> 
    <td width="15%"><input type=text name=ipaddress value='. $row["ipaddress"].'></td> 
    <td width="20%"><input type=text name=ipmiipaddress value='. $row["ipmiipaddress"].'></td> 
    <td width="15%"><input type=text name=terminalserveraddress value='. $row["terminalserveraddress"].'></td> 
    <td width="10%"><input type=text name=locationlab value='. $row["locationlab"].'></td> 
    <td><input type=submit name=update value=update></td> 
    <td><input type=submit name=delete value=delete></td> 
    <td id=id name=id value='. $row["id"].'>'. $row["id"].'</td> 
</table> 
</form>'; 
     }} 
     ?> 

Я могу ввести SQL запрос ниже вручную на странице PhpMyAdmin, так что я знаю, что это правильно. Код для кнопки Delete выглядит следующим образом:

<?php 
if(isset($_POST['delete'])) { 
$deletequery = ("DELETE * FROM lab WHERE ='$_POST[id]'"); 
mysql_query($deletequery, $conn); 
}; 
?> 

При нажатии на кнопку удаления он появляется, чтобы обновить страницу, но ничего не меняется. Я предполагаю, что если я смогу заставить кнопку удаления работать, обновление будет работать аналогичным образом, но пока я в тупике.

+0

Ее даже не туманно правильно '" DELETE FROM WHERE лаборатории SOME_COLUMN_NAME = '{$ _POST [' ID ']}' "' – RiggsFolly

+0

Пожалуйста, не используйте [расширение базы данных mysql_'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), оно устарело (ушло навсегда в PHP7) Специально, если вы просто изучаете PHP, потратьте свои силы на изучение расширений базы данных «PDO». [Начать здесь] (http://php.net/manual/en/book.pdo.php) – RiggsFolly

ответ

0
<?php 
if(isset($_POST['delete'])) { 
    $deletequery = ("DELETE FROM lab WHERE **columnName** ='$_POST[id]'"); 
    mysql_query($deletequery, $conn); 
} 
?> 

Вы не указали имя столбца в запросе. Также нет инструкции * в DELETE, потому что удаление означает удаление строки.

+1

Пожалуйста, не используйте [расширение базы данных mysql_'] (http://stackoverflow.com/questions/12859942/why -shouldnt-i-use-mysql-functions-in-php), он устарел (ушел навсегда в PHP7) Специально, если вы просто изучаете PHP, потратьте свои силы на изучение расширений базы данных «PDO». [Начать здесь] (http://php.net/manual/en/book.pdo.php) – RiggsFolly

0

Прежде всего позвольте мне помочь вам при форматировании кода

вы не должны писать весь HTML-код в эхо ...

вместо попробовать это ....

<?php 
while($row = $result->fetch_assoc()) { 
?> 
<table> 
<form action="testpage2.php" method="pos"> 
    <td width="10%"><input type="text" name="make" value="<?= $row["make"] ?>"></td> 
.... 
.... 

</table> 
</form> 
    <?php 
    } 
    ?> 

также вы должны использовать mysqli вместо mysql

и ваш запрос к базе данных неверны, это должно быть так.

DELETE FROM lab WHERE id ='$_POST[id]' 

если вы используете MySQLi, то вы можете также использовать некоторые функции, как это ..

mysqli_query($con,$deletequery) 
if(mysqli_errno($con)) 
{ 
    echo("SOme error while executing query : ".mysqli_error($con)); 
} 
+0

Большое спасибо за ваш совет. Я скорректировал код, как вы рекомендовали. Кажется, обновить страницу, когда я нажимаю кнопку удаления, но она по-прежнему не удаляет запись. – user3524358

+0

проверить ответ, который я редактировал, вы можете использовать функцию mysqli_error, чтобы проверить, что проблема в вашем запросе –

+0

Итак, когда я нажимаю кнопку «Удалить», она обновляет страницу и отображает одно из значений в этой строке (сервер терминалов) и ничего больше. Он не выполняет операцию удаления.Это что-то делает, но не то, что я ожидаю. – user3524358