Запрос на удаление комментария - PullRequest
0 голосов
/ 02 ноября 2009

Итак, у меня почти работает моя функция удаления, у меня правильно загружается страница без каких-либо фатальных ошибок, но она все еще не справляется.

Вот часть моего цикла while:

echo "<a href='http://www.@#@$#%##%#.org/Profile.php?id=".$prof->id."'>";
echo " delete";
echo "</a>";

А вот часть моего запроса, которая явно неверна:

$query = "UPDATE `ProfileComments` SET `status` = 'dead' WHERE `id` = '".$prof->id."' LIMIT 1";

Итак, как мне получить это, чтобы удалить комментарий на странице? И пометить статус мертвого в базе данных?

Ответы [ 4 ]

2 голосов
/ 02 ноября 2009

Из вашего sql похоже, что вы делаете мягкое удаление , что нормально. Ваше утверждение select должно исключать комментарии, имеющие статус «мертвые»

SELECT columns FROM ProfileComments WHERE status != 'dead' AND id = {$prof->id}

Конечно, это предположение, не видя, как вы заполняете prof->id при создании ссылки.

Есть еще несколько проблем с вашим постом:

  1. Как и предлагали другие, вы должны использовать параметризованные запросы, в противном случае вы оставляете себя открытым для SQL-инъекций
  2. Вы не должны выполнять удаление через запрос get (используя голый якорь). Либо удалите, используя AJAX, либо через форму. Изменение данных сервера с помощью get - плохая практика.
0 голосов
/ 02 ноября 2009

Ваш оператор SQL выглядит хорошо, и HTML-код тоже хорошо. Чтобы найти проблему

  1. Вы должны убедиться, что ваш SQL получает правильный параметр, в данном случае идентификатор. просто выведите его, если идентификатор отсутствует или неправильный, вы знаете, что $ prof-> id нужно исправить.

  2. также проверьте ссылку, сброшенную вашим php, опять же она содержит правильный идентификатор?

  3. Перед выполнением SQL убедитесь, что у вас нет ошибок, в основном убедитесь, что вызывается оператор SQL-запроса. и убедитесь, что ваше соединение с БД работает.

  4. Если выражение mysql неверно, оно не приведет к фатальной ошибке, вам нужно распечатать ошибку самостоятельно с помощью mysql_error ().

0 голосов
/ 02 ноября 2009

Не видя больше вашего кода (и не зная вашего уровня опыта), я не уверен, где вам на самом деле нужна помощь, поэтому простите меня, если мой вопрос / совет очевиден и слишком базов для вас:

Как $prof->id заполняется в Profile.php? Вы вытаскиваете его из запроса (например: $id = $_REQUEST["id"])?

И, как сказал Майкл, используйте параметризованные запросы . (Если вам нет дела до детей, хотя бы подумайте о котятах!)

0 голосов
/ 02 ноября 2009

Только потому, что вы не видите фатальных ошибок, ваш код не должен вести себя так, как вы этого хотите.

Изучите содержимое $prof->id внутри цикла, пропустив его через var_dump и затем die, это позволит вам контролировать, какое свойство хранится в тот момент, когда вы хотите его распечатать.

То же самое относится к вашему запросу, var_dump, чтобы увидеть, что он содержит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...