2015-09-30 88 views
1

從本網站下面的幾個例子後,我想我即將做到,但仍然不能。使用PHP和AJAX進行Mysql更新,無法更新數據庫

我有這樣的代碼:

HTML

... 
<a href="javascript:void(0);" class="button red big" style="font-size:24px;" onclick="update_it(<?=$_REQUEST["yeah"]["id"];?>);">Pay</a> 
... 

AJAX

function update_it(n_id){ 
    $.ajax({ 
     type: 'POST', 
     url: 'update_yes.php', 
     data: {idd: n_id}, 
     success: function(output) 
     { 
      alert('Updated, server says '+n_id); 
     }, error: function() 
     { 
      alert('Wrong!'); 
     } 
    }); 
} 

PHP

<?php 
    $link = mysqli_connect("localhost", "root", "****", "****"); 
    $sql = "DELETE FROM stuff WHERE id = " .$_POST["idd"]; 
    mysqli_query($link,$sql) or die(mysql_error()); 
?> 

一切正常,但PHP(我認爲)。我這樣說是因爲我可以看到HTML如何正常工作以及AJAX函數如何返回成功消息,但數據庫中仍然沒有任何反應。

我嘗試了AJAX函數的數據字段中的不同結構,如data: 'idd': n_id,data: 'idd=' n_id,,但似乎沒有任何結果。

我在做什麼錯?任何提示或建議?先謝謝你。

+0

在PHP代碼中建立查詢之後,您是否嘗試過var_dump($ sql)?它將幫助我們看到你發送到數據庫的內容。 – Musa

+0

你可以請var_dump $ link和$ sql和mysqli_query結果,以便我們看到問題出在哪裏? –

+0

除了易於SQL注入外,代碼示例看起來很好,應該可以工作。可能PHP從未執行過。檢查執行到那個點的PHP文件。 – marekful

回答

0

好吧,最後我找到了解決方案。

代碼很漂亮,它是apache所有權和維權問題。

This幫了很大忙。

謝謝各位的意見。

+0

你可以用post中的罰款替換find ... –

0

你應該加入退出;在PHP代碼結束語句。回聲一些成功聲明。然後你應該在javascript中提醒輸出變量。所以你可以確保調用php代碼。

+0

好吧,添加退出功能和一些「回聲」和一些JavaScript「提醒」後​​沒有發生任何事情,所以我想我沒有達到文件。會是什麼呢?如果我移動文件或者只是改變它的名字,我會得到AJAX函數錯誤信息。我不知道該怎麼辦。 – Zariweya

1

我在Winodws上使用apache MySQL和php。我有同樣的問題。 我有我的更新腳本這是所謂的AJAX

  1. 一個UPDATE SQL語句
  2. 查詢從數據庫MySQL的
  3. 嘗試更新不改變的記錄,(我的意思是簡單的更新 行使用相同的數據)

然後...我什麼都沒有更新,因爲它是錯誤的AJAX查詢其稱之爲UPDATE語句在你的服務器端腳本。但是,如果您在任何保存(更新)數據對其進行一些更改之前它將起作用。

我使用REPLACE聲明而不是UPDATE

我在這個解決方案上尋找了很多時間,真的太多了。我不明白爲什麼會發生這種情況,因爲當我在服務器上調試帶有自己params的整個腳本並且所有腳本都正常工作時,但是當Ajax只幫助REPLACE時。