使用php中的变量更新mysql表
我有一个数据库,用于存储医疗账单数据,其中包含以下变量: dos、耐心、原创、pmts、杰出 付款后,我希望能够从未付款中减去付款,并将其添加到pmts中使用php中的变量更新mysql表,php,mysql,Php,Mysql,我有一个数据库,用于存储医疗账单数据,其中包含以下变量: 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[]来自一个HTM
$pmt = $_POST[pmt];
$patient = $_POST[patient];
$dos = $_POST[dos];
$sql=("UPDATE medical
SET pmts = pmts + $pmt
WHERE dos = $dos AND patient = $patient");
POST[]来自一个HTML表单
它没有提供错误;但是,它不会更新现有表(医疗)。您没有用单引号括起文字值
$sql="UPDATE medical
SET pmts = pmts + $pmt
WHERE dos = '$dos' AND patient = '$patient'";
它只是将查询存储在字符串中。使用函数处理数据库(
PDO
或mysqli
)以执行此查询
您最好使用准备好的语句自己构建查询,否则您可能会得到SQL注入我在代码中看到一些错误。查看此代码:
$pmt = $_POST['pmt'];
$patient = $_POST['patient'];
$dos = $_POST['dos'];
$sql=("UPDATE medical
SET pmts = pmts + '$pmt'
WHERE dos = '$dos' AND patient = '$patient'");
pdo代码示例:
$pdo->prepare('UPDATE medical
SET pmts = pmts + :pmt
WHERE dos = :dos AND patient = :patient')
->execute(array('pmt'=>$pmt,'dos'=>$dos,'patient'=>$patient));
您试图做的是引用MySQL中的一列
$Qupdate=("UPDATE medical SET pmts = (pmts) + $pmt, out = (out) - $pmt WHERE dos = $dos AND patient = $patient");
在我看来,您只需要数字输入,因此我也会在使用之前对$\u POST数据进行消毒
$Qupdate=mysql_real_escape_string($Qupdate);
另外,由于使用的变量是数字,我认为不需要将它们括在引号中。但如果你这样做(不只是使用数字)。然后,您希望转义引号(\“”)
阅读关于(1)数据清理(保护自己免受sql注入攻击)和关于
mysql\u查询
(或者更好:mysqli\u查询
).PHP只是为您创建了一个字符串$sql
,但显然不知道如何处理它。只有您应该了解mysql\u query
,它是不受欢迎的上帝……您的代码容易受到sql注入的攻击。请注意,存储派生数据也是一种冗余形式。
$Qupdate=("UPDATE medical SET pmts = (pmts) + \"$pmt\", out = (out) - \"$pmt\" WHERE dos = \"$dos\" AND patient = \"$patient\"");