PHP-запрос Mysql работает отлично, но возвращает значение false

У меня есть несколько mysql_query(), которые работают нормально, но если я помещу их в оператор if else, они вернут false. Есть идеи?

        public function delete_post() {

        $id = $_GET['post_id'];

        mysql_query("DELETE FROM posts WHERE post_id='$id' LIMIT 1");

        if ( !mysql_query() ) {
            echo ('Could not be Deleted');
        } else { 
            echo 'Deleted Successfully'; 
        }
    }

и когда я запускаю его, он удаляет сообщение, но возвращает «Невозможно удалить»


person Andor Nagy    schedule 22.04.2013    source источник
comment
Функции mysql_* устарели. Используйте mysqli или PDO.   -  person    schedule 23.04.2013
comment
Задайте запрос как переменную и используйте эту переменную для своего оператора if().   -  person Unexpected Pair of Colons    schedule 23.04.2013
comment
Просто примечание: возврат mysql_query возвращает true/false только в случае успеха SQL-запроса, а не в том случае, если что-либо изменилось после выполнения.   -  person dbf    schedule 23.04.2013


Ответы (4)


Вы выполняете запрос с пустым оператором SQL, который не является правильным SQL. Попробуй это.

$result = mysql_query("DELETE ...");
if (!$result) {
    echo ('Could not be Deleted');
} else {
    echo 'Deleted Successfully';
}

Разница в строке 2 (моего кода).

person mbarlocker    schedule 22.04.2013
comment
Вы не заметили SQL-инъекцию. - person Sven; 21.05.2013

Примечание. mysql_query() не рекомендуется. Вместо этого вам следует использовать PDO::query.

Если вы все еще хотите использовать его, сделайте следующее:

$result = mysql_query("DELETE FROM posts WHERE post_id='$id' LIMIT 1");
if (!$result) 
{
    echo ('Could not be Deleted');
}

Пояснение:

В исходном коде вы вызываете mysql_query() два раза. Во второй раз аргумента нет, поэтому он не работает, и это то, о чем сообщает ваш код.

person Jean    schedule 22.04.2013
comment
Спасибо. Оба они работают :) Я был просто тупым .. Я хотел сделать это короче. - person Andor Nagy; 23.04.2013

Я думаю, что это довольно похожий вопрос/ответ: Что возвращает успешный MySQL DELETE? Как проверить успешность DELETE?

Можете ли вы попробовать то, что он предлагает, и посмотреть, сработает ли это для вас?

person anotherBob    schedule 22.04.2013

Вы можете попробовать:

public function delete_post() {

        $id = $_GET['post_id'];

        $query = mysql_query("DELETE FROM posts WHERE post_id='$id' LIMIT 1");

        if ( !$query ) {
            echo ('Could not be Deleted');
        } else { 
            echo 'Deleted Successfully'; 
        }
    }
person RelevantUsername    schedule 22.04.2013
comment
Вы не заметили SQL-инъекцию. - person Sven; 21.05.2013