2010-09-16 2 views
0

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

|id|team_name|team_url|xml| 

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

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

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

Спасибо.

+0

обновил мой ответ, чтобы включить пример php. – Bot

ответ

1

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

DELETE FROM tablename WHERE team_url = '$team_url'; 

$ team_url является переменной PHP, которая имеет значение team_url.

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

Что вам нужно сделать, так это в php-loop через все строки и проверить их 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); 

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

+0

Я думаю, что удаление основано на предикате (в PHP), а не на простом сравнении. – strager

+0

обновил мой ответ, включив php. – Bot

+0

** Пожалуйста, избегайте '$ row ['team_url']'. ** – strager

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. – strager