2013-07-13 4 views
-4

Я создавал простой скрипт для сообщений и начал писать сценарий с именем delete.php, где пользователь может ввести свой пароль для удаления сообщения. Сообщение сохраняется с 4 значениями: id, name, password, timestamp, message.DELETE запрос не будет полностью удалять запись

Проблема, с которой я столкнулся, - это запрос DELETE, который я использую, не полностью удалит запись. Он удалит поля name и message, но строка все еще существует с id, timestamp и password. Поэтому на моей доске сообщений, а не на удаляемом сообщении, это пустое сообщение с меткой времени.

Я могу удалить запись в PHPMyAdmin, но она не будет работать из моего PHP-скрипта.

$db_connection->query("DELETE FROM 'messages' WHERE 'id' = ".$m_id.";") 
    or die($db_connection->error); 

$m_id хранит идентификационный номер сообщения.

Ошибки не возвращаются, и я не могу получить доступ к журналу ошибок Apache.

+0

Должен быть запрос '$ db_connection-> (« УДАЛИТЬ ОТ сообщений WHERE id = ». $ M_id) или die (ошибка $ db_connection->);' –

+0

Опубликовать журнал ошибок Apache. – JorgeeFG

+1

Кстати, работа удаляется, и строка ушла, или нет. delete не очищает ячейки. –

ответ

1

Это вполне может быть ";", который препятствует ваш запрос, в конце вашего выступления здесь:

("DELETE FROM 'messages' WHERE 'id' = ".$m_id.";") 

И, как было отмечено в разделе комментариев, имена таблиц не нужны кавычки вокруг них

типичный DELETE заявление должно состоять из простого запроса, как это:

mysql_query("DELETE FROM messages WHERE id='$m_id'") or die(mysql_error()); 

Хотя, используя mysql_ будет очень плохой идеей, поскольку они устарели/не поддерживаются. В этом случае, вы должны научиться PDO/mysqli

+1

Кроме того, сообщения должны быть без кавычек, поскольку это имя-табло. Тем не менее, я не могу представить, как это может вызвать такую ​​специфическую проблему. – edwardmp

+0

ОК, так что все это, все еще не повезло. Это действительно странно. –

+0

@RhysNorton Попробуйте еще раз, с обновленным подходом и просмотрите свои ошибки. – samayo

0

Try:

$db_connection->query('DELETE FROM messages WHERE id = ' . $m_id) or die($db_connection->error); 

Если это не работает, вы можете сделать 2 вещи:

1) Посмотрите на журнал ошибок Apache.

2) Когда вы удаляете строку в PhpMyAdmin, она часто показывает вам используемый запрос.

0

Я посмотрел скриншот, который вы указали в комментариях, и одна из возможностей заключается в том, что существующая запись действительно удалена, но новая добавляется другой частью кода. Не видя всего вашего кода, я не могу сказать, действительно ли это так. Конечно, это нужно искать, кроме того, чтобы убедиться, что у вас нет триггеров. Другая возможность заключается в том, что ваш оператор delete фактически не работает вообще, но другой фрагмент кода обновляет эту запись и устанавливает некоторые из столбцов в NULL/blank.

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