2015-06-21 25 views
0

如何使用php變量更新數據庫?

$Createdby=$_SESSION['adminlog']; 
 
$total =$_POST['total']; 
 
$due =$_POST['due']; 
 
$date =$_POST['issedate']; 
 
$invoiceno =$_POST['invno']; 
 
$CmpnyName =$_POST['CmpnyName']; 
 
$itemdetails =$_POST['item_details']; 
 
$itemname =$_POST['itemname']; 
 
$amtpaid =$_POST['paid']; 
 

 

 

 
$query = "UPDATE billdata SET Total='$total' Due='$due' WHERE InvoiceNo=$invoiceno"; 
 

 
$result = mysql_query($query);

這是用得到的html值的變量,並用新的數據

+0

是什麼問題? – Noman

+1

什麼問題? 您應該首先使用mysql_connect()連接到您的數據庫; 不要忘記在你的情況下用mysql_real_escape_string()檢查SQL注入。 – jde

+0

add thing done db connected,select db n bla bla with this same method我用保存(插入)詳細信息到表中,所以現在m試圖更新(更新)選定的帳單,但是這種方法不起作用 –

回答

3

首先,從來沒有使用棄用mysql_* API。
切換到PDOmysqli,都有prepared statements,這將使您的代碼更安全,當涉及到SQL-Injections(您的代碼是非常開放的)。

當查詢失敗時,全局函數mysql_error()將返回最新的mysql錯誤。
獲取有關失敗查詢信息的最簡單方法是在查詢執行後添加or die(mysql_error());
與示例代碼:

$result = mysql_query($query) or die(mysql_error()); 

這將報告您的錯誤並停止執行腳本。

您的sql代碼有點不對(正如RST提到的),您在嘗試設置的值之間缺少逗號。


使用mysqliprepared statements,你的代碼可能看起來是這樣的:

// Using the mysqli object oriented style. 
$mysqli = new mysqli('localhost', 'username', 'password', 'database'); 
// Check so that the myqsli connection didnt have any errors. 
if($mysqli->connect_errno) { 
    die($mysqli->connect_error); 
} 
// Prepare the statement. 
$statement = $mysqli->prepare('UPDATE billdata SET Total=?, Due=? WHERE InvoiceNo=?'); 
// The question marks is placeholders for the input that will be added in a while. 
// Check so that the statement was created correct. 
if(!$statement) { 
    die($mysqli->error); 
} 
// Bind your parameters (ssi tells mysqli what type of params it is, s = string, i = int). 
$statement->bindParams('ssi', $total, $due, $invoceno); 
// Execute the statement. 
if(!$statement->execute()) { 
    die($statement->error); 
} 

// Cleanup. 
$statement->close(); 
$mysqli->close(); 
+0

謝謝吉特我可以知道mysql和mysqli之間的尊重? 我使用xammp服務器瞭解了php我的管理員(localhost)!這是mysqli支持xammp服務器嗎? –

+1

我認爲大多數標準的PHP安裝包都包含mysqli擴展,它應該默認啓用。 'mysqli'代表Mysql改進。它包括諸如預先準備的語句之類的東西(這在舊的API中不存在)。它仍然使用'mysql'數據庫並且可以使用相同的查詢,甚至可以使用它的過程風格將舊'mysql_ *'代碼轉換爲'mysqli',儘管我個人建議轉向OOP風格。欲瞭解更多信息,身份證推薦PHP文檔:http://php.net/manual/en/book.mysqli.php – Jite

2
$query = "UPDATE billdata SET Total='$total', Due='$due' WHERE InvoiceNo=$invoiceno"; 

更新特定發票號碼應該有套值之間的逗號我的代碼M。 使用$_POST()的值不是一個好主意,因爲它們更好地執行一些驗證檢查。

+0

$ query =「UPDATE billdata SET Total ='$ total',Due ='$ due'WHERE InvoiceNo ='$ invoiceno」;' 這應該是,它的工作感謝您的支持 –

0

$ query =「UPDATE billdata SET Total ='$ total',Due ='$ due'WHERE InvoiceNo ='$ invoiceno'」;

這是使用PHP的MySQL查詢和它的工作很好的測試,以及:)