2015-08-30 130 views
0

我已經瀏覽了WWW和論壇,但找不到工作答案。我要更新.........../post.php中的id我的帖子= 19通過php在mysql數據庫中更新數據

這是我的函數:

function update_user($conn) { 

    if(isset($_GET['id'])) { 
     $id = $_GET['id']; 
     $name = $_POST['name']; 
     $age = $_POST['age']; 
     $sql = "UPDATE users SET name =':name', age = ':age' WHERE id=':id'"; 
     $query = $conn->prepare($sql); 
     $query->execute(array(':name'=>$name, ':age'=>$age, ':id' => $id)); 
     } 
} 

這是我的表格:

<h3>Update a user</h3> 
<?php update_user($conn) ?> 
<form name="myForm2" method="POST" action= ""> 
<label>Name:</label><input type="text" id="name" name="name"> 
<label>Age:</label><input type="text" id= "age" name="age"> 

<input type="submit" value="add" name="update"> 

我沒有錯誤,但POST只是返回沒有更新的舊記錄,我填寫了表單。

希望有人能幫助我,謝謝你。 Bas

PS。 $ conn是正確的,並且在插入或打印帖子時工作。

+6

擺脫佔位符周圍的單引號。他們不需要。 –

+0

你在哪裏發送'$ _GET ['id']'?你的表單發送一個'POST',所以也許整個塊永遠​​不會運行?如果您發送該消息,請參閱上面的註釋。 – chris85

+0

@JohnConde你的答案奏效!我偷了這個人的代碼。現在,當我去...../post.php?id = 19是說: 注意:未定義的索引:名稱在/config.php在線72 注意:未定義的索引:age in /config.php在線73 我在這裏錯過了什麼嗎? –

回答

1

夫妻問題是,1查看配置文件頁面$_GET['id']已設置,所以無論表單是否提交,它都將執行update_user函數。 您應該檢查另一個值以確保表單已提交。 另一個問題是帶命名參數的SQL不應該使用引號。

<?php 
function update_user($conn) 
{ 
    if(isset($_POST['id'])) { 
     $id = $_POST['id']; 
     $name = $_POST['name']; 
     $age = $_POST['age']; 
     $sql = "UPDATE users SET name = :name, age = :age WHERE id = :id"; 
     $query = $conn->prepare($sql); 
     $query->execute(array(':name' => $name, ':age' => $age, ':id' => $id)); 
    } 
} 
?> 

<h3>Update a user</h3> 
<?php update_user($conn) ?> 
<form name="myForm2" method="POST" action= ""> 
<label>Name:</label><input type="text" id="name" name="name"> 
<label>Age:</label><input type="text" id= "age" name="age"> 
<input type="hidden" name="id" value="<?php echo $_GET['id'] ?>"> 
<input type="submit" value="add" name="update"> 
</form> 

我添加了一個隱藏的輸入字段的ID,並改變了條件update_user檢查的帖子ID,而不是GET ID。

對於所有編程愛好,請在將您的$ _POST數據發送到數據庫之前進行驗證。

+0

非常感謝! –

0

閱讀菲爾的評論,應該這樣做,還應該添加一個$ postId變量來定義當前帖子ID,以便表單發送正確的帖子進行編輯。

<form name="myForm2" method="POST" action= "post?id=<?= $postId ?>"> 
<label>Name:</label><input type="text" id="name" name="name"> 
<label>Age:</label><input type="text" id= "age" name="age"> 

<input type="submit" value="add" name="update"> 
+0

這也不起作用。只是在更改代碼中的某些語法錯誤之後,將我發送到age.page post.php?id = 。 –

0

好吧。我將創建一個update_post.php文件並以此方式工作。感謝所有的努力。