плохо знакомый с MySQL вопрос php

0

У меня есть таблица в моей базе данных, которая выглядит так:

|id|team_name|team_url|xml|

У меня есть cronjob, который вызывает script. В этом script я хочу использовать свой класс, чтобы проверить, существует ли URL-адрес, а если нет, удалите запись в базе данных. Что-то вроде этого:

foreach row in table, if (Security::checkUrl(team_url)), delete entry. else: update xml.

Как я могу сделать что-то подобное? Мне не нужна помощь с проверкой url только запроса mysql и как я должен проходить через каждую строку и удалять строки, где URL недействителен.

Спасибо.

  • 0
    обновил мой ответ, включив пример php.
Теги:

2 ответа

1
Лучший ответ

Запрос mysql для удаления строки будет

DELETE FROM tablename WHERE team_url = '$team_url';

$team_url - это переменная php, имеющая значение team_url.

Вышеупомянутая команда удалит все строки, где team_url соответствует $team_url.

То, что вам нужно сделать, - это пройти через php через все строки и проверить их URL.

$query = "SELECT * FROM tablename";

// Perform Query
$result = mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
   if (Security::checkUrl($row['team_url'])) {
      $res = mysql_query("DELETE FROM tablename WHERE team_url = '".mysql_real_escape_string($row['team_url'])."'");
   }
   else {
      //update xml
   }
}

mysql_free_result($result);

Вышеприведенный код является просто образцом и не может использоваться в производстве без надлежащей очистки/проверки инъекций sql.

  • 0
    Я думаю, что удаление основано на предикате (в PHP), а не на простом сравнении.
  • 0
    обновил мой ответ, чтобы включить php.
Показать ещё 2 комментария
1

Чтобы удалить строку с заданным URL-адресом, подготовьте запрос типа DELETE FROM table WHERE team_url =? с, например, mysqli_stmt::prepare(). Затем привяжите URL-адрес, который вы хотите удалить, с параметром mysqli_stmt::bind_param(), à la bind_param("s", $dead_url). Затем выполните оператор с помощью mysqli_stmt::execute().

РЕДАКТИРОВАТЬ: на предложение страгара: ссылка mysqli в руководстве по PHP находится здесь: http://php.net/manual/en/book.mysqli.php. Он имеет ссылки на документацию для всех функций, о которых я только что упомянул.

  • 0
    Может быть полезно включить ссылки на документацию PHP.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню