2013-07-13 23 views
-1

我有一個數據庫,它用以下變量存儲醫療賬單數據: dos,patient,original,pmts,outstanding。使用php中的變量更新mysql表

我付款後,我希望能夠從未付款中減去付款並將其添加到pmts。

$pmt = $_POST[pmt]; 
$patient = $_POST[patient]; 
$dos = $_POST[dos]; 

$sql=("UPDATE medical 
SET pmts = pmts + $pmt 
WHERE dos = $dos AND patient = $patient"); 

POST []來自HTML表單。

它沒有提供錯誤;但是,它不更新現有的表格(醫療)。

+0

閱讀了關於(1)數據消毒(保護自己免受SQL注入攻擊),並約'mysql_query'讀了(或更好:'mysqli_query') 。PHP只是爲你創建了一個字符串'$ sql',但顯然不知道該怎麼處理它。 – Sumurai8

+0

只有你應該閱讀關於'mysql_query'的信息,它已被棄用 – RiaD

+0

神聖的....你的代碼容易受到攻擊sql注入 –

回答

0

你沒有用單引號括起你的文字值。

$sql="UPDATE medical 
SET pmts = pmts + $pmt 
WHERE dos = '$dos' AND patient = '$patient'"; 
0

它只是將查詢存儲在一個字符串中。使用函數來處理數據庫(PDOmysqli)以執行此查詢。

而且你最好應該使用建立查詢自己準備陳述或者你可能會得到SQL注入

0

我看到代碼中的一些錯誤。看看這個代碼:

$pmt = $_POST['pmt']; 
$patient = $_POST['patient']; 
$dos = $_POST['dos']; 

$sql=("UPDATE medical 
SET pmts = pmts + '$pmt' 
WHERE dos = '$dos' AND patient = '$patient'"); 
1

PDO的代碼示例:

$pdo->prepare('UPDATE medical 
    SET pmts = pmts + :pmt 
    WHERE dos = :dos AND patient = :patient') 
->execute(array('pmt'=>$pmt,'dos'=>$dos,'patient'=>$patient)); 
+1

你怎麼敢寫安全的醫療記錄代碼 – goat

+0

@chris大聲笑它必須是脆弱的xD –

0

你所試圖做的是指在MySQL列。

$Qupdate=("UPDATE medical SET pmts = (pmts) + $pmt, out = (out) - $pmt WHERE dos = $dos AND patient = $patient"); 

它看起來像你對我只是希望數字輸入,所以我也將在使用前消毒$ _ POST數據。

$Qupdate=mysql_real_escape_string($Qupdate); 

此外,因爲使用的變量是數字,我不認爲你需要用引號括起來。但如果你這樣做(不只是使用數字)。然後,你想逃離引號(\」)

$Qupdate=("UPDATE medical SET pmts = (pmts) + \"$pmt\", out = (out) - \"$pmt\" WHERE dos = \"$dos\" AND patient = \"$patient\"");