php - 在 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();
?>
请检查此代码我的代码中是否有错误或返回此错误的原因
解决方案
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;
}
推荐阅读
- amazon-web-services - 将 API 添加到项目时如何将区域添加到 AWS Amplify 的配置
- loops - 是否可以明确指定循环迭代的生命周期?
- python - 通过外键过滤后删除重复项
- php - 为什么是
自身重叠的元素文本
- ruby - 如果我在初始化方法下将数据集合存储到实例变量中会发生什么?
- json - 循环期间无法将 vm 添加到 RecoveryServiceVault
- javascript - 在 Redux 中将多个操作传递给 mapDispatchToProps
- android - 获取所有授权的 GoogleSignInAccount 的 - Drive REST API
- windows - gvim 命令行模式 :!start [windows command] 返回 Command not found 错误信息
- java - servlet [dispatcher] 的 Servlet.init() 抛出异常