2012-05-11 139 views
0

我試圖讓DELETE鏈接印在每個$row旁邊。此外,在另一頁上,有一個「下載」鏈接 - 他們應該以同樣的方式工作。問題是這樣的:我將DELETE和DOWNLOAD同時打印在每條記錄旁邊,但是使用我的代碼,沒有任何反應,或者我的腳本出錯。出於某種原因,我有我的網站最複雜的功能運行,但這仍然逃避我。這裏有一些代碼:mysqli刪除不起作用

while ($row = mysqli_fetch_array($r,MYSQLI_ASSOC)) 
    { 
    echo '<tr><td align="left">' . 
    $row['title'] . '</td><td align="left">' 
    . $row['genre'] . '</td><td align="left">' 
    . $row['length'] . '</td><td align="left">' 
    . $row['created'] . '</td><td align="left">' 
    . $row['views'] . '</td><td align="left">' 
    . "<a href='wprofile.php?id={$row['upload_id']}'>Delete</a></td> . '</td></tr>'; 
    } 

和在同一個php頁面我有這個邏輯,這是失敗的我。這個例子是爲了刪除,但是我的DOWNLOAD鏈接問題同樣失敗。

if(isset($_GET['upload_id'])) 
    { 
    $id = intval($_GET['upload_id']); 

    require_once (dbconnectionpath); 

    $delquery = "DELETE FROM 'upload' WHERE 'upload_id' = {$id}"; 
    $done = @mysqli_query ($dbc, $delquery); //run the query 

    if($done) { 
    if (mysqli_num_rows($done)==1) { 
    echo 'Record deleted'; 
    } 
    else{ 
    echo 'Delete failed'; 
    } 

    @mysqli_free_result($result); 
    } 
    else{ 
    echo "Error! Query failed: <pre>{$dbc->error}</pre>"; 
    } 
    mysqli_close(dbconnection); 

我得到的錯誤是 「錯誤,查詢失敗」

+2

'$ dbc-> error'說什麼?刪除'@'也可能有幫助。 –

+0

或'mysqli_error',爲了一致性 – Amadan

+0

好調用,那個錯誤不輸出任何東西,它只是說「錯誤!查詢失敗:[空格]該行被借用代碼,去圖 – V1GG3N

回答

0

if(isset($_GET['upload_id']))變化if(isset($_GET['id']))

$id = intval($_GET['id']);

的HTML參數ID,而不是upload_id

+0

我只是這樣做,並改爲mysqli_error。現在沒有錯誤,重定向到.php?id = ...記錄仍然在數據庫中 – V1GG3N

0

在你的鏈接,你似乎是設置id

<a href='wprofile.php?id={$row['upload_id']} ... 

,但您的代碼引用$_GET['upload_id']。換句話說,你在代碼中引用了錯誤的名字。在代碼中使用id或在鏈接中使用upload_id

另一件事,雖然這可能只是因爲我看不到所有的HTML - 你的代碼中似乎有很多</td>元素。如上所述,檢查鏈接末尾處的鏈接,可能會關閉之前未顯示的<td>


如果,你在評論中提到,你的「查看源文件」是顯示的鏈接爲:

<a href='newwriter_profile.php?id='>Delete</a></td> 

然後有什麼毛病你是HTML鏈接的創建。

有很多事情可能會出現錯誤,第一對夫婦想到的是您的原始查詢沒有update_id,或者ID對於您正在查找的行確實是空白的在。

在生成HTML鏈接行之前檢查$row['update_id']的值,應至少確認或否定該假設。除此之外,你必須弄清楚爲什麼你的鏈接不正確。


有一件事我剛剛注意到,你可能想看看,是你報價的使用:

$delquery = "DELETE FROM 'upload' WHERE 'upload_id' = {$id}"; 

現在我知道MySQL使用反引號有時保護表和列名從不正確的解析(例如與select `column with spaces` from tbl1 ...),但您的代碼似乎有單引號而不是反引號。

這只是一個要檢查的東西。可能是因爲查詢中的where子句將字符串字符串「upload_id」與您的變量進行比較,而不是比較upload_id列。

這也許可以解釋爲什麼你delete沒有擊中任何行,因爲你的ID是(可能)的自動遞增的整數字段,這意味着它永遠不會等於一個非數字的字符串常量。

+0

我解決了這個問題,我被重定向到了我的ahref,但沒有列出id(profile.php?id =),並且記錄仍然在數據庫中,現在沒有錯誤。仍然在救助我,沒有任何錯誤 – V1GG3N

+0

@ V1GG3N,這是一個_different_問題,應該問這樣的問題。原來的問題已經解決,你會得到更廣泛的迴應,如果你用更新的細節提出一個新問題,而不僅僅是留下評論 - 這也將更好地服務於SO Q&A本質。但是,我會用刪除按鈕在頁面上執行「查看源代碼」,以確保href被正確輸出。 – paxdiablo

+0

指出,謝謝我會問一個新的問題。 fyi Delete是我的觀點來源 – V1GG3N

0

嘗試刪除大括號,怎麼一回事,因爲當你打印出查詢創建它顯示的值用大括號括起來的id可能會導致不刪除id。

這應該工作:「刪除上傳WHERE upload_id = $ id」;

防止頁面引導到另一個頁面使用preventdefault js函數。