2014-11-22 4 views
-1

У меня проблема с кодом PDO. Я пробую код ниже.PDO удалить из MySQL

$id = null; 

if (!empty($_GET['t_id'])) { 
    $id = $_REQUEST['t_id']; 
} 

$action = isset($_POST['_DELETE_']) ? $_POST['_DELETE_'] : ""; 

if ($action == 'do_not_delete') { 
    header("Location: index.php?action=DEL_ERROR"); 
} 

if($action=='delete') { 

$host = "localhost"; 
$db_name = "_notice"; 
$username = "root"; 
$password = "111"; 

$con = new PDO("mysql:host={$host};dbname={$db_name}", $username, $password); 
$id = $_REQUEST['t_id']; 
$query = "DELETE FROM topics WHERE topic_id = ?"; 
$stmt = $con->prepare($query); 
$stmt->bindParam(1, $id); 
$exc = $stmt->execute(); 

if($exc){ 
$con = null; 
header("Location: index.php?action=DEL_OK"); 
}else{ 
$con = null; 
header("Location: index.php?action=DEL_ERROR"); 
}} 

Ничего не происходит (доза не удаляет элемент из базы данных). У меня нет ошибок на странице; даже когда я использую блок catch try или параметр страницы, такой как index.php?action=DELETE

+0

'$ _REQUEST ['t_id']' не соответствует вашему '? Action = DELETE'. Покажите нам полный код и то, что вы пробовали. В то же время добавьте отчет об ошибках в начало вашего файла (ов) сразу после вашего открытия тега < 'error_reporting (E_ALL); ini_set ('display_errors', 1); 'посмотрите, не даст ли что-либо. –

+0

См. Ответ Фалька о том, что вы не выполняете (наименее, а не в опубликованном коде); если вы действительно «не» используете это. –

ответ

1

После подготовки запроса и параметров привязки вам необходимо позвонить $stmt->execute().

Update:

Вы проверяете содержание $_GET['t_id'] но всегда установив $ идентификатор в $_REQUEST['t_id'], и все будет выполняться, только если $_POST['_DELETE_'] содержит delete.

Кроме того, попробуйте проверить полученный запрос и параметры с помощью $stmt->debugDumpParams() перед выполнением и, возможно, замените ваш bindParam на $stmt->bindParam(1, $id, PDO::PARAM_INT).

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