У меня есть таблица в моей базе данных, которая выглядит так:
|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 недействителен.
Спасибо.
Запрос 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.
Чтобы удалить строку с заданным 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. Он имеет ссылки на документацию для всех функций, о которых я только что упомянул.