2015-07-04 3 views
0

Я просмотрел «рекомендации», основанные на названии, которое я поместил в это, и темы либо не получили ответа, либо не были связаны с моей ситуацией (из того, что я мог видеть).Удаление строки базы данных через PHP

У меня есть HTML-страница PHP, которая вызывает информацию из базы данных и вводит ее в таблицу. У меня есть тег, готовый для функции удаления, но я просто не могу понять, что это правильно. Я надеялся, что кто-то здесь сможет мне помочь.

Все соответствующие страницы.

connection.php

<?php 
    try{ 
     $handler = new PDO('mysql:host=127.0.0.1;dbname=data', 'root', 'root'); 
     $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    }catch(PDOException $e){ 
     echo 'ERROR: ' . $e->getMessage(); 
    } 
?> 

location1.php

<?php 
include('connection.php'); 
$query = $handler->query('SELECT * FROM subsordered WHERE location ="location1"'); 
$delete = $handler->query('DELETE * FROM subsordered WHERE id = :id'); 

?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 
<body> 
    <h1 align="center">Location 1</h1> 
    <table align="center" border="1" height="10%" width="80%"> 
     <tr> 
      <th>ID</th> 
      <th>Name</th> 
      <th>Desc</th> 
      <th>Location</th> 
      <th></th> 
    </tr> 
    <?php while($row = $query->fetch()){ '<tr> 
     <td align="center">';echo $row[''],'</td> 
     <td align="center">';echo $row['id'],'</td> 
     <td align="center">';echo $row['name'],'</td> 
     <td align="center">';echo $row['desc'],'</td> 
     <td align="center">';echo $row['location'],'</td> 
     <td align="center"><a href="connection.php?id='.$row['id'].'">Delete</a></td> 
    </tr>';} ?> 
</table> 

Когда я пытаюсь сохранить MySQL удалить вызов в первом разделе PHP в LOCATION1 он ломает страницу, Я почти уверен, что это связано с тем, что я назначаю 2 вызова одной функции, но я, кроме создания новой страницы jsut для одного вызова на удаление, я не знаю, что еще сделать

+0

вы должны descide, если вы хотите запросить или удалить коснуться, то, как ваш код, вы всегда выполняете оператор SQL –

ответ

2

Try:

<?php 
include('connection.php'); 
$query = $handler->query('SELECT * FROM subsordered WHERE location ="location1"'); 
if (isset($_GET["id"])) { 
    $delete = $handler->exec('DELETE FROM subsordered WHERE id = \'' . $_GET["id"] . '\''); 
} 

?> 

Это должно работать. Во всяком случае, я бы рассмотреть вопрос об изменении кода для того, чтобы предотвратить SQL-инъекции (Check this)

+0

Это позволяет странице все еще работать. Как запустить вызов удаления, когда я нажимаю на тег? Также делать это с плохой кодировкой. Я использовал подготовку в других разделах моей программы. Это просто, чтобы заставить его работать, оттуда я сделаю его более безопасным. – John

+0

Но, основываясь на вашем коде, вы делаете запрос сервера каждый раз, когда хотите удалить запись. С этим кодом вы не сможете удалить запись без обновления (если это то, что вы хотите). Если вы хотите это сделать, вам нужно подумать об использовании ajax. Это то, что вы хотите? Если нет, возможно, я не понял ваш вопрос правильно. – Mindastic

+0

Я надеялся, что удастся удалить строки, используя только PHP и MySQL. Необходимость обновления страницы не имеет большого значения, потому что это можно сделать автоматически. Ajax блестящий, я использую для мобильного аспекта этого, но я надеялся избежать этого для этого раздела. – John

0

Я не так хорошо знакомы с PDO, но от того, что я вижу, эта линия имеет проблему:

$delete = $handler->query('DELETE * FROM subsordered WHERE id = :id'); 

Он должен быть это я думаю:

$delete = $handler->query('DELETE FROM subsordered WHERE id = :id'); 

Посмотрите на пример здесь: http://www.mustbebuilt.co.uk/php/insert-update-and-delete-with-pdo/

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