Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php中的变量更新mysql表_Php_Mysql - Fatal编程技术网

使用php中的变量更新mysql表

使用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

我有一个数据库,用于存储医疗账单数据,其中包含以下变量: 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表单


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

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

$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\"");