2017-02-02 79 views
-1

我已經遵循了一些教程,在一些論壇上閱讀了很多關於delete語句以及如何在pdo php中使用它的問題。我綁定了參數,沒有綁定參數,使用了準備函數,定義了我的變量和索引。當我單擊索引頁上的刪除鏈接時,程序將重定向到刪除頁面,但不會發生錯誤,但不會從表中刪除該行。我只用兩列就使我的程序變得簡單,使其儘可能簡單。我已經使用了每個教程和我遵循的示例的確切語法,直到我耗盡三天時間。如果有人能告訴我我做得不對,我會很感激。我將從鏈接和delete.php頁面的索引頁面發佈代碼。在所有適當的尊重Fred-ii-我已閱讀所有的答案。截斷不適用於我,因爲我不想刪除一個表,只有一行。我不想刪除所有的行,所以我使用WHERE子句。與其他類似的問題不同,我沒有收到任何錯誤。我將我的代碼重新編寫爲建議的內容,但是我的刪除語法仍然不會刪除索引頁中的行。我的WHERE子句指向name_id,它是我的數據庫中的主鍵。我的delete語句在pdo php crud中怎麼不起作用

 <p><td><a href="delete.php?name_id=<?php echo $row['name_id']; ?>">Delete</a></td></p> 
    And here is the code from the delete page. 

    require_once 'debase.php'; 

// Get the name to delete 
if(isset($_GET['name_id'])){ 
$name_id = $_GET['name_id']; 
try{ 
    //$dns ="mysql:host=localhost;dbname=$db;charset=$charset"; 
$conn = new PDO($dsn,$user,$pass); 
$stmt = $conn->prepare("DELETE * FROM student WHERE name_id=':name_id'"); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$stmt->bindValue(':name_id',$name_id, PDO::PARAM_STR); 
$stmt->execute(); 

} catch (PDOException $e){ 
$error_message = $e->getMessage(); 
$conn = null; 
} 
} 

enter image description here

回答

1

你的SQL語法不正確。
你只是DELETE FROM ...而不是DELETE * FROM ...

和刪除引號輪':name_id'

+0

此外,參數化查詢不需要引用參數。 – miken32

+0

因此,如果我刪除*和引號,它應該工作? – swydell

+0

還將'name_id =':name_id''更改爲'name_id =:name_id' – RiggsFolly