2013-04-21 188 views
-1

創建mysqli刪除查詢時如何運行PHP代碼來刪除與刪除的信息相關聯的文件?Mysqli刪除查詢

我知道mysqli::$affected_rows但它並沒有真正幫助我。

+0

這就是爲什麼你應該將文件存儲在數據庫中,而不是路徑。 – vascowhite 2013-04-21 17:19:05

+0

@vascowhite你是什麼意思? – 2013-04-21 17:46:42

+1

RTLM:http://php.net/unlink @vasco:db中的文件是一個好主意。從刪除查詢中殺死「文件」的次要效率增益也不足以彌補其帶來的所有其他麻煩 – 2013-04-21 17:48:42

回答

0

可以運行兩個queries.That會是這樣:

SELECT id, relevant_field from my_table WHERE the_condition_for_the_rows_to_delete. 

再進行第二次查詢:

DELETE FROM my_table WHERE id IN (the_ids_you_got_with_the_first_select) 

之後,你將刪除與第一個查詢的結果相關聯的文件。

0

您可以使用PHP的unlink()函數刪除文件(docs here)。

首先做一個查詢來獲取文件的位置,然後通過結果運行一個循環:

$mysqli = new mysqli("localhost", "user", "password", "database"); 
$results = $mysqli->query("SELECT id,file_path FROM table WHERE whatever")->fetch_assoc(); 
foreach($results as $result) { 
    unlink($row['file_path']); 
    $mysqli->query("DELETE FROM table WHERE id = " . $row['id']); 
} 

確保您淨化任何用戶提交的輸入,以避免SQL注入。

編輯:這不是最有效的方式做到這一點 - 我已經證明了這種方式簡化代碼,你會過得更好添加ID,以一個數組,然後刪除所有行中單個查詢。

1

以下行刪除全部在「標題」列中包含單詞「Cron」的行。

mysqli_query($con,"delete from `foexstco_rr`.`Timings` where `Title`='Cron'"); 

下一行刪除一切

mysqli_query($con,"delete from `foexstco_rr`.`Timings`"); 

該行刪除了包含3個條件的行。請注意,**和**必須分隔每個條件。

mysqli_query($con,"delete from `foexstco_rr`.`Timings` where `Number`='77' and `Title`='Cron' and `Cols`='1'"); 

如果您打印的mysqli的響應,「1」將意味着命令已進行,但並不一定意味着任何行已被刪除。 「0」表示命令被錯誤地寫入。