2010-09-16 41 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. 

我該如何做這樣的事情?我不需要網址驗證的幫助,只需要mysql查詢以及我應該如何瀏覽每一行並刪除網址無效的行。

謝謝。

+0

更新了我的答案,包括php示例。 – Bot 2010-09-16 16:28:12

回答

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中),而不是簡單的比較。 – strager 2010-09-16 16:19:21

+0

更新了我的答案,包括php。 – Bot 2010-09-16 16:27:06

+0

**請轉義$ row ['team_url']'。** – strager 2010-09-16 16:36:51

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()執行語句。

編輯:per strager的建議:在PHP手冊中的mysqli參考在這裏:http://php.net/manual/en/book.mysqli.php。它鏈接到我剛剛提到的所有功能的文檔。

+0

可能有助於包含PHP文檔的鏈接。 – strager 2010-09-16 16:25:59