正确的表单验证(PHP/MySql)

正确的表单验证(PHP/MySql),php,mysql,forms,validation,Php,Mysql,Forms,Validation,运行此代码时,我遇到以下错误: 解析错误:语法错误,第43行的/Applications/XAMPP/…results.php中出现意外的“,”和预期的“)” 第43行对应于下面的查询行 这是我的密码。变量与问卷页面的表单输入相关$source\u of_fund\u 1和$source\u of_fund\u 1与单选按钮表单输入相关。其他变量与文本字段/区域相关。我正在对单选按钮变量和使用isset验证!文本字段/区域为空 <?php $source_of_fund_1 = $_PO

运行此代码时,我遇到以下错误:

解析错误:语法错误,第43行的/Applications/XAMPP/…results.php中出现意外的“,”和预期的“)”

第43行对应于下面的查询行

这是我的密码。变量与问卷页面的表单输入相关<代码>$source\u of_fund\u 1和
$source\u of_fund\u 1
与单选按钮表单输入相关。其他变量与文本字段/区域相关。我正在对单选按钮变量和
使用isset验证!文本字段/区域为空

<?php

$source_of_fund_1 = $_POST['source_of_fund_1'];
$source_of_fund_2 = $_POST['source_of_fund_2'];
$repayment_date = $_POST['repayment_date'];
$do_differently = $_POST['do_differently'];

require_once 'connect.inc.php';

$query = "INSERT INTO tablename 
            (source_of_fund_1, source_of_fund_2, repayment_date, do_differently)
            VALUES 
            ('$source_of_fund_1', '$source_of_fund_2', '$repayment_date',  '$do_differently')";

$result = @mysqli_query($link, $query);

if (($result) && !empty($repayment_date, $do_differently) 
        && isset($source_of_fund_1, $source_of_fund_2)) {
    echo 'Thank you for your submission.';
} else {
    echo 'We were unable to process your information.'.mysqli_error($link).'Please ensure all required fields were filled out.';
}

mysqli_close($link);

?>

您的问题在于空呼叫。它不接受多个参数:

!empty($repayment_date, $do_differently)
应该是:

!empty($repayment_date) && !empty($do_differently)

你的问题是空电话。它不接受多个参数:

!empty($repayment_date, $do_differently)
应该是:

!empty($repayment_date) && !empty($do_differently)

我认为,直接的问题是,因为您正在使用带有多个参数的
empty
——与
isset
不同,它只需要一个参数

不过,还有一些其他问题

  • 不要用
    @
    抑制任何错误-如果出现问题, 你想知道这件事,这样你就能妥善处理

  • 您正在将内容从$\u POST直接传递到SQL中,而无需进行健全性检查这不安全。至少你应该使用——但是如果你使用的是mysqli,为什么不把它做成一个准备好的语句,然后绑定变量呢?安全多了


  • 我认为,直接的问题是,因为您正在使用带有多个参数的
    empty
    ——与
    isset
    不同,它只需要一个参数

    不过,还有一些其他问题

  • 不要用
    @
    抑制任何错误-如果出现问题, 你想知道这件事,这样你就能妥善处理

  • 您正在将内容从$\u POST直接传递到SQL中,而无需进行健全性检查这不安全。至少你应该使用——但是如果你使用的是mysqli,为什么不把它做成一个准备好的语句,然后绑定变量呢?安全多了


  • 非常确定您不能在PHP中使用多行字符串警告您的代码容易受到sql注入攻击!为什么要在运行MySQL查询后检查所有
    $\u POST
    数据是否已填充?如何防止PHP中的SQL注入:谢谢大家的评论和提示!非常确定您不能在PHP中使用多行字符串警告您的代码容易受到sql注入攻击!为什么要在运行MySQL查询后检查所有
    $\u POST
    数据是否已填充?如何防止PHP中的SQL注入:谢谢大家的评论和提示!嗨,谢谢!制作一个准备好的语句并绑定变量是什么意思?请看下面的答案:-这是一种帮助您编写更安全代码的方法。就目前情况而言,如果有人输入包含撇号的数据,它最多只能打断您的查询;而且可能做得更糟。事先准备好的声明有助于避免这种情况。谢谢!非常感谢!嗨,谢谢!制作一个准备好的语句并绑定变量是什么意思?请看下面的答案:-这是一种帮助您编写更安全代码的方法。就目前情况而言,如果有人输入包含撇号的数据,它最多只能打断您的查询;而且可能做得更糟。事先准备好的声明有助于避免这种情况。谢谢!非常感谢!很乐意帮忙。如果它对你有用,你应该接受这个答案,以备将来人们遇到这个问题时参考。很高兴为你提供帮助。如果它对你有用,你应该接受这个答案,以备将来人们遇到这个问题时参考。