-1

我有一个存储医疗账单数据的数据库,其中包含以下变量:dos、患者、原始、pmts、未完成。

付款后,我希望能够从未付款中减去付款并将其添加到 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 表单。

它没有提供错误;但是,它不会更新现有表(医疗)。

4

5 回答 5

1

pdo 代码示例:

$pdo->prepare('UPDATE medical 
    SET pmts = pmts + :pmt
    WHERE dos = :dos AND patient = :patient')
->execute(array('pmt'=>$pmt,'dos'=>$dos,'patient'=>$patient));
于 2013-07-13T06:19:30.177 回答
0

您没有用单引号括起您的文字值。

$sql="UPDATE medical 
SET pmts = pmts + $pmt
WHERE dos = '$dos' AND patient = '$patient'";
于 2013-07-13T05:59:18.130 回答
0

它只是将查询存储在字符串中。使用函数与数据库 (PDOmysqli) 一起执行此查询。

你最好使用准备好的语句来自己构建查询,否则你可能会得到 SQL 注入

于 2013-07-13T06:01:15.157 回答
0

我在您的代码中看到了一些错误。看看这段代码:

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

$sql=("UPDATE medical 
SET pmts = pmts + '$pmt'
WHERE dos = '$dos' AND patient = '$patient'");
于 2013-07-13T06:03:17.707 回答
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\"");
于 2013-07-13T06:22:09.703 回答