2015-03-24 3 views
0

Во-первых: Да, mysqli потрясающе, я не могу использовать его для этого.Код SQL в php не удаляет запись

сейчас: Я написал код, который когда-то вызывал, должен удалить определенную запись, он выполняет, никаких ошибок и выходное сообщение даже не выходит, но оно не удаляет запись.

Почему? Как я могу это исправить?

Я не вижу никакой ошибки до сих пор:

<?php 
 
if(isset($_POST['Delete'])) 
 
{ 
 
$connection = mysql_connect("Deleted login info"); 
 

 
// Check connection 
 
if (!$connection) 
 
{ 
 
\t //echo "Connection failed: " . mysql_connect_error(); 
 
} \t \t 
 
else 
 
{ 
 
    //select a database 
 
    $dbName="Katz"; 
 
    $db_selected = mysql_select_db($dbName, $connection); 
 
     
 
    //confirm connection to database 
 
    if (!$db_selected) 
 
    { 
 
    die ('Can\'t use $dbName : ' . mysql_error()); 
 
    } \t \t \t 
 
    else if ($_POST[KittenID]=='') 
 
    { \t 
 
\t $OutputMessage = 'Must add a Kitten-ID'; 
 
    } \t \t \t \t \t \t 
 
    else 
 
    {//exeption else \t \t 
 
    {//main else 
 
     $sql = "DELETE FROM Kittenzz WHERE KittenID='$_POST[KittenID]"; 
 

 
     $retval = mysql_query($sql, $connection); 
 
     if(!$retval) 
 
     { 
 
\t \t \t $OutputMessage = 'RECORD DOES NOT ALLOW DELETION'; 
 
     } 
 
     $OutputMessage = 'RECORD DELETED'; 
 
\t \t \t \t 
 
     mysql_close($connection);    
 
\t }//main else 
 
    }//exception else 
 
    } 
 

 
    mysql_close($connection); 
 
} 
 
\t \t \t 
 
?>

Могу ли я получить свежий взгляд от кого-то?

+1

Пожалуйста, прекратите использование ** устаревшего ** 'mysql' API. Посмотрите на 'mysqli' или' PDO' вместо этого. И если вы все еще хотите продолжать использовать устаревший api, чтобы любить что-то, дезинфицируйте свой пользовательский ввод. Ваш скрипт открыт для SQL-инъекций! – Jite

+1

Профессор хочет mysql, что мне делать, если класс не прошел? –

+0

Нет, вы должны спросить своего профессора, почему он рекомендует использовать плохой и устаревший API. Вы уверены, что после api, а не базы данных? – Jite

ответ

0

Вы пропустили одну одинарную кавычку в запросе.

$sql = "DELETE FROM Kittenzz 
     WHERE KittenID='$_POST[KittenID]"; 

Пожалуйста, попробуйте следующее:

$sql = "DELETE FROM Kittenzz 
     WHERE KittenID='".$_POST['KittenID']."';"; 
+0

Большое вам спасибо, просто вопрос, когда я попытаюсь найти запись позже, я нахожу ее пустой, но я ее нахожу. Могу ли я сделать так, как будто запись никогда не добавлялась? –

+0

@ user3541786: извините, но я не получаю ваш «этот» вопрос. – AkshayP

+0

: Хорошо, мой метод поиска был сломан, и я думал, что он находит удаленные записи. –

0
$sql = "DELETE FROM `Kittenzz` 
         WHERE `KittenID`='".$_POST['KittenID']."'"; 

попробовать это

+0

Спасибо за совет. –

0

Я думаю, что вам не хватает закрытия 'в конце удаления SQL. Вы также не объединяете переменную $ _POST [KittenID], а просто вставляете ее в конец строки. Итак:

$sql = "DELETE FROM Kittenzz 
        WHERE KittenID='$_POST[KittenID]"; 

становится:

$sql = "DELETE FROM Kittenzz 
        WHERE KittenID='" . $_POST[KittenID]. "'"; 
+0

ах я вижу. Благодарю. –

0

У вас есть ошибки в коде:

Первое изменение это:

if ($_POST[KittenID]=='') 

к этому:

if ($_POST['KittenID']=='') 

и это:

$sql = "DELETE FROM Kittenzz WHERE KittenID='$_POST[KittenID]"; 

к этому:

$sql = "DELETE FROM Kittenzz WHERE KittenID='" . $_POST['KittenID'] . "'"; 
2

Что другие говорили, но и - ваш вложенности выключен. Например, ниже вложенности не является правильным:

else 
    { //exeption else  
     { //main else 

Вы не можете создать «главный» там - вся исключение заворачивают в основном, или основной, не существует.

Либо удалить стартовую и закрывающую скобу для «main», либо поставить перед ним инструкцию.

В соответствии с комментариями, по-видимому, это принято/игнорируется в PHP. Поэтому замените мой «can not» на «возможно, не стоит, потому что он выглядит странно и не имеет никакой цели».

+0

Это только мои ментальные заметки, его 3:30 утра трудно сконцентрироваться, и я должен закончить это перед классом. –

+0

Меня не интересуют примечания - скобки «{« неуместны :) – Mackan

+0

Область скобок не заставит код работать, но они избыточны. Во многих языках область определения создавала бы контекст, но в php это не имеет значения. – Jite

0

Кажется, что в вашем запросе отсутствует закрывающий символ.

твое:

"DELETE FROM Kittenzz WHERE KittenID='$_POST[KittenID] "; 

Шоуда быть:

"DELETE FROM Kittenzz WHERE KittenID='$_POST[KittenID]' "; 

КСТАТИ: @vivek код более элегантно.

Cheers

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