首页 > 解决方案 > 在 php 函数中显示错误

问题描述

我在我的 php 脚本中声明了一个名为 test_input 的函数,它在其他脚本中工作得非常好。

它显示错误

致命错误:未捕获错误:调用 C:\xampp\htdocs\submitdata\cwisubmit.php:25 中未定义的函数 test_input() 堆栈跟踪:#0 {main} 在 C:\xampp\htdocs\submitdata\cwisubmit.php 中抛出在第 25 行

我的php脚本是:

<?php 
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

echo "Database Connected SUCCESSFULLY";

if($_SERVER["REQUEST_METHOD"]=="POST") {
    // Variables initialization
    $fname=$lname=$dob=$phone=$email=$postcode=$staddress=$city=$lan=$lcwi=$ptype=$mhtype="";

    // Retrieving the data from the form
    $fname=test_input(mysqli_real_escape_string($conn,$_POST['fname']));
    $lname=test_input(mysqli_real_escape_string($conn,$_POST['lname']));
    $dob=test_input(mysqli_real_escape_string($conn,$_POST['dob']));
    $phone=test_input(mysqli_real_escape_string($conn,$_POST['phone']));
    $email=test_input(mysqli_real_escape_string($conn,$_POST['email']));
    $postcode=test_input(mysqli_real_escape_string($conn,$_POST['postcode']));
    $staddress=test_input(mysqli_real_escape_string($conn,$_POST['staddress']));
    $city=test_input(mysqli_real_escape_string($conn,$_POST['city']));
    $lan=test_input(mysqli_real_escape_string($conn,$_POST['lan']));
    $lcwi=test_input(mysqli_real_escape_string($conn,$_POST['lcwi']));
    $ptype=test_input(mysqli_real_escape_string($conn,$_POST['ptype']));
    $mhtype=test_input(mysqli_real_escape_string($conn,$_POST['mhtype']));

  function test_input($data) {
      $data=trim($data);
      $data=stripslashes($data);
      return $data;
  }

  //sql insert
  $sql="INSERT INTO cwi(fname, lname, dob, phone, email, postcode, staddress, city, lan, lcwi, ptype, mhtype) VALUES('$fname','$lname','$dob','$phone','$email','$postcode','$staddress','$city','$lan','$lcwi','$ptype','$mhtype')";

  if($conn->query($sql)===TRUE){
      echo "<center>RECORDS UPDATED SUCCESSFULLY</center>";
  }else{
      echo "Error: ".$sql."<br>".$conn->error;
  }
}

$conn->close();
?>

请检查此代码我的代码中是否有错误或返回此错误的原因

标签: phpfunction

解决方案


PHP 函数可以在定义之前调用,因为 PHP 先解析文件然后执行它。但这里是转折点。

包含在条件语句(if else)中的函数将不会被解析。仅在 PHP 解释后可用if

所以,你必须把你的功能移到IF块之外

if(condition){
//your code
}
//Your function
  function test_input($data){
      $data=trim($data);
      $data=stripslashes($data);
      return $data;
  }

推荐阅读