2011-08-29 43 views
0

對不起非重複的結果回合的混亂,這是什麼,我問。我正在嘗試將視頻發送到FTP服務器,但我不希望ftp上已存在的視頻重新上傳。因此,我需要一種方法來告訴數據庫來做到這一點。我有什麼是下面,由於@neo進行了更改,但它仍然返回和無效的查詢。打通SQL查詢

<?php 

$dest="/Tools"; 


$query = "SELECT videoid AS videoId FROM videos 
WHERE channel = 62 AND videoid NOT IN (@videoId)"; 


$results = mysql_query($query); 

$server=("ftp.//"); 

$connect=ftp_connect($server); 

$login_result=ftp_login($connect,"",""); 

if(!(login_result)||!($connect)) 
{ 
$error; 
} 
else 
{ 
echo "success"; 
} 


if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    die($message); 
} 


while ($row = mysql_fetch_assoc($result)) { 
    // loop through every videoid returned, ftp each individually 
$upload=ftp_put($connect,$dest,$row['videoid'],FTP_BINARY); 
if (!upload) 
{ 
echo "failed to upload $results\n"; 
} 

else{ 
echo "successfully uploaded $videoid"; 
} 

ftp_close($connect); 

} 
mysql_free_result($result); 





?> 
+2

請從每個表中的一些示例數據(幾行)澄清你的要求。 –

+3

該查詢的期望結果是什麼?目前還不清楚你想得到什麼。 – J0HN

+2

自動擁有這是在「鞋」表創建的每個「shoeid」 ??????? – Tobson

回答

2

SELECT shoes.shoeid AS shoeId從鞋子WHERE顏色= RED AND shoes.shoeid NOT IN(@shoeID);

哪裏@shoeID是鞋的id那些已經被上傳到FTP位置

+0

neo請看看我的編輯。我已經包含了你建議的內容,但是它返回一個帶有空白mysql_error消息的無效查詢。當我檢查ftp時,沒有視頻也沒有上傳。 – user875139

+0

問題新。我修正了我的錯誤,但仍未上傳vids。我是否必須在代碼中創建一個變量「@shoeid」,並將它引用到我的ftp目標上。像這樣:@ shoeid =「ftp ...」? – user875139

+0

嗨,@videoId應該是FTP服務器中所有視頻的逗號分隔列表。 EG:@videoId = 1,2,3,4其中1,2,3,4是已經在FTP服務器中的視頻的ID。但是,正如我之前所建議的那樣,更好的方法是在數據庫中有一個標記來標記視頻是否已上傳!希望這可以幫助 – neo

0

你的意思是這樣的:

SELECT shoes.shoeid AS shoeId, sox.shoeid AS soxId 
FROM shoes, sox 
WHERE color = RED AND sox.shoeid = shoes.shoeid; 

這將與他們的新別名返回字段:shoeIdsoxId

注:這是建立在MySQL的邏輯。它應該在其他的sql引擎上工作,但沒有經過測試。

+0

感謝您的快速響應。這不是我想要的,我的目標是得到一個結果,所以我可以將結果發送到一個ftp,但我不想重複已經在ftp上載過的鞋子。這就是爲什麼我需要一種方法來驗證。對不起,我不夠清楚。現在我可能甚至都不需要sox表。我只需要知道哪些鞋尚未上傳到FTP中。謝謝 – user875139

+0

你的數據庫中是否有標誌表明哪些鞋已經被ftp控制? – neo

+0

不,沒有一種方法可以在不改變數據庫的情況下做到這一點? – user875139

0

你必須讓已經被上傳到服務器鞋列表中選擇一個逗號分隔的列表。

要麼把一個標誌分貝的說是「新」別的穿越的FTP服務器上所有的鞋子,然後把它傳遞給分貝。雖然後者不被推薦。