2010-08-01 102 views
1

我試圖從mysql的用戶表中刪除記錄,無法刪除PHP中的數據庫(mySQL)記錄,我哪裏出錯了?

代碼是這樣的。

if(isset($_GET['id'])) { 
    //create query to delete the record 
    $query = "DELETE FROM users WHERE id =" . int($_GET['id']) or die(mysql_error()); 

    //execute query 
    if($mysqli->query($query)) { 
     //print number of affected rows 
     echo $mysqli->affected_rows. " row(s) affected"; 
    } 
    else { 
     //print error message 
     echo "Error in query : $query " . $mysqli->error; 
    } 
} 
else { 
    echo "Could not Execute the Delete query"; 
} 

在同一時間我從數據庫中的users表中迭代記錄,它是這樣的。

//query to get records 
$query = "SELECT * FROM users"; 
//execute query 
if($result = $mysqli->query($query)) { 
    // see if any rows were returned 
    if($result->num_rows > 0) { 
     // if yes then print one after another 
     echo "<table cellpadding=10 border=1>"; 
     while($row = $result->fetch_array()) { 
      echo "<tr>"; 
      echo "<td>" .$row[0] . "</td>"; 
      echo "<td>" .$row[1] . "</td>"; 
      echo "<td>" .$row[2] . "</td>"; 
      echo "<td><a href =" . $_SERVER['PHP_SELF']. "?id" .$row[0]. ">Delete</a></td>"; 
      echo "</tr>"; 
     } 
     echo "</table>"; 
    } 
    $result->close(); 
} 

的問題是,我能夠從數據庫中獲取的記錄,並顯示在瀏覽器,但是當我嘗試刪除該記錄的第一個條件沒有通過,即如果(isset($ _ GET [」 id'])),而是去其他條件並打印消息「無法執行刪除查詢」,我想它不能獲取$ _GET ['id']所以只有它拒絕進入if條件,

PS:我將不勝感激,如果有人介紹我用通俗的話說,我是一個新手到編程,感謝..

+0

如何使用URL來執行這個查詢是什麼樣子? – Mchl 2010-08-01 17:02:08

+0

不要忘記標記正確答案;) – Mchl 2010-08-01 17:33:16

+0

你不需要在查詢行使用'或die()',你只是定義了一個字符串,而不是與數據庫交互:'$ query =「DELETE FROM users WHERE id =「。 int($ _ GET ['id']);' – 2010-08-01 18:18:09

回答

6

你缺少一個=

echo "<td><a href =" . $_SERVER['PHP_SELF']. "?id=" .$row[0]. ">Delete</a></td>"; 
         HERE -------------------^ 
1
"DELETE FROM users WHERE id =" . int($_GET['id']) or die(mysql_error()); 

是不是應該是intval? PHP中沒有功能int。還有(不太優選)轉換爲int,如下所示:(int) $_GET['id'])。

+0

是的。 intval()或(int)$ _ GET ['id']。仍然沒有說明爲什麼它會直接到if的else分支。 – Mchl 2010-08-01 17:03:22

+0

@Mchl是的,Pekka明白了。 – Artefacto 2010-08-01 17:07:25

+0

是的,它應該是intval,我只是測試它,我把它改回來了...... Pekka得到了答案,現在它已經完美無缺了...... – 2010-08-01 17:10:21