2014-12-01 40 views
-2

編輯:添加了viewProblems的整個代碼,與實際的憑據信息只是***。試圖獲得一個PHP按鈕來刪除MySQL行

我一直試圖做這一整天,我無法弄清楚。我想要的是每行末尾的一個按鈕(該按鈕正確顯示),它允許我從MySQL數據庫和頁面中刪除該行(儘管不會刪除任何內容)。我的代碼如下:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <meta name="description" content=""> 
     <meta name="author" content=""> 

    <title>View Problems</title> 

    <!-- Bootstrap core CSS --> 
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> 
</head> 

<body> 

    <div class="well"> 
     <div class="container"> 
      <div class="page-header"> 
       <h1>Jimmy's Laundry</h1> 
      </div> 
     <ol class="breadcrumb"> 
       <li><a href="index.html">Home</a></li> 
       <li><a href="login.html">Login</a></li> 
       <li><a href="adminPage.php">Admin page</a></li> 
     </ol> 
     </div> 
    </div> 

     <?php 
     $servername = "***"; 
     $username = "***"; 
     $password = "***"; 
     $dbname = "***"; 
     // Create connection 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     // Check connection 
     if ($conn->connect_error) 
     { 
      die("Connection failed: " . $conn->connect_error); 
     } 

     $sql = "SELECT problem_id, machine_id, description FROM tbl_problem"; 
     $result = $conn->query($sql); 
     if ($result->num_rows > 0) 
     { 
      echo '<table class="table table-hover"><tr><th>Problem ID</th><th>Machine Number</th><th>Problem Description</th><th>  </th></tr>'; 

      while($row = $result->fetch_assoc()) 
      { 
       echo "<tr><td>" . $row['problem_id']. "</td><td>" . $row['machine_id']. "</td><td>" . $row['description']. "</td><td><form action='deleteProblem.php?name=" . $row['problem_id']."' method= 'post'><input type='hidden' name='id' value=".$row['problem_id']."><input class ='btn btn-danger' type='submit' name='submit' value='Resolved?'></form></td></tr>"; 
      } 
      echo "</table>"; 

     } 
     else 
     { 
      echo "There are no problems! :)"; 
     } 
     ?> 
      </table> 
</body> 

對於我的主頁,viewProblems.php。我deleteProblem.php頁面如下:

<?php 
$query= "DELETE FROM tbl_problem WHERE problem_id={$_POST['id']}"; 
mysql_query ($query); 
if (mysql_affected_rows() == 1) 
{ 
    echo "<strong>Row has been deleted</strong>" 
} 
else 
{ 
    echo "<strong>Deletion Failed</strong>" 
}?> 

我一直在瀏覽本網站和谷歌,而我試圖得到它的工作,但它只是不會。該頁面正確加載表格,但是當我點擊該按鈕時,它將我從網站/ viewProblems.php帶到website/deleteProblem.php?name = 9(或者10,11,12,13,取決於我按下哪個按鈕)但該頁面只是空白區域,數據庫不會更新。

任何幫助,將不勝感激。

P.S.我知道mySQL_方法已過時,但我們必須使用它們。

+1

你可能會被困在不得不使用mysql _ *()函數的地方,但是這不會使你無法編寫[sql注入攻擊](http://bobby-tables.com) - 無害代碼。你只是假設你的查詢永遠不會失敗。你檢查mysql_errors()嗎?你不會顯示你連接到數據庫的方式/方式,所以我們知道你的刪除查詢根本不會被執行。 – 2014-12-01 20:53:52

+0

開始調試:在執行之前調用'deleteProblem.php'的頂部'print_r($ _ POST);' – 2014-12-01 20:55:37

+0

Echo'$ query'。你會看到確切的查詢,因爲它將被執行。嘗試使用像'mysql_error()'這樣的函數來獲取錯誤信息。你也可以嘗試在PHPMyAdmin中執行該查詢,看看它是否可以在那裏工作。 – GolezTrol 2014-12-01 20:56:12

回答

3

刪除行的腳本是在單獨的請求中執行的單獨腳本。因此,它與生成頁面的請求完全隔離,如果要查詢或刪除數據,則必須創建新的數據庫連接。

在你目前的情況下,你不建立連接,所以這就是爲什麼delete語句失敗。

+0

更不用說從一個API到另一個;) – 2014-12-01 21:15:57

+0

由於它是一個不同的,孤立的腳本,這實際上應該不重要。在第二個腳本中使用'mysql_connect'可以很好地工作。 – GolezTrol 2014-12-01 21:16:55

+0

你有一個點。但是,如果OP使用PHP 5.5的機會,即使使用'mysql_'函數連接代碼,它也會因爲棄用而失敗。至少,Wamp就是這種情況。 – 2014-12-01 21:18:37

-1

更改SQL DELETE語句

mysql_query("DELETE FROM tbl_problem WHERE problem_id='$_POST[id]'"); 

的問題可能是不使用的時候撇號的SQL喜認爲你選擇的row=row代替row='data'

也是事實,

你的第二個腳本永遠不會建立SQL連接。

+0

更改了它,但仍然獲得了相同的空白頁面,並且自發布此消息以來,向第二個腳本添加了一個SQL連接。 – 2014-12-01 21:35:04

+0

你的意思是SQL認爲這個數字是一個行號?我不認爲這會發生。如果'problem_id'是一個數字字段,那麼插入不帶引號的id是完全合法的。也許你被一個像WHERE 1 = 2這樣的條件弄糊塗了,這意味着WHERE <第1列的值> = 2。 – GolezTrol 2014-12-01 21:56:20

+0

據我所用,沒有撇號它搜索一行。然後你可以按照SELECT * FROM table WHERE name = author'的方法做一些事情,它會返回名稱和作者字段相同的行。幾次,而我自己的東西我已經得到了PHP錯誤''MYSQLI錯誤:無法找到列'作者'在...''' – TheElm 2014-12-01 22:08:58