【问题标题】:php i got Uncaught Error Function name must be a string inphp 我得到未捕获的错误函数名称必须是一个字符串
【发布时间】:2020-03-23 16:53:49
【问题描述】:

我正在做项目制作自动生成数字的 Web 应用程序。我得到这个错误:

注意:未定义变量:第 5 行 C:\xampp\htdocs\bigweb\number_generate.php 中的 getRomawi

致命错误:未捕获错误:函数名称必须是 C:\xampp\htdocs\bigweb\number_generate.php:5 中的字符串:5 堆栈跟踪:#0 C:\xampp\htdocs\bigweb\save.php (3): require_once() #1 {main} 在 C:\xampp\htdocs\bigweb\number_generate.php 第 5 行抛出

我已经在谷歌上搜索过,但我没有找到任何与我的案例完全相同的主题,这里是代码:

number_generate.php

<?php
include "fungsi_romawi.php";
include "save.php";
$month = date('n');
$romawi = $getRomawi($month);
$year = date('Y');
$number = "/YMMI/".$romawi."/".$year;

$query = "SELECT MAX(number_out) as MAXKODE FROM bigdata_admin WHERE month(date_in)='$month'";
$hasil = mysqli_query($query); 
$data = mysqli_fetch_array($hasil);
$no = $data['MAXKODE'];
$Gnome = $no+1;

$kode = sprintf("%02s", $Gnome);
$nomerbaru = $kode.$number;
?>'''

这是链接到第一个错误的其他文件,我制作了多个文件 php:

fungsi_romawi.php

<?php
function getRomawi($month)
{
    switch($month)
    {case '1': 
            return "I";
            break;
        case '2':
            return "II";
            break;
        case '3':
            return "III";
            break;
        case '4':
            return "IV";
            break;
        case '5':
            return "V";
            break;
        case '6':
            return "VI";
            break;
        case '7':
            return "VII";
            break;
        case '8':
            return "VIII";
            break;
        case '9':
            return "IX";
            break;
        case '10':
            return "X";
            break;
        case '11':
            return "XI";
            break;
        case '12':
            return "XII";
            break;}
}
?>

最后是 save.php,它将显示数字:

<?php
if (!empty($_POST['signup']));
require_once "number_generate.php";

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "bigdata";
{
$id_in = (FILTER_VAR($_POST['id_in'], FILTER_SANITIZE_NUMBER_INT));
$name_in = (FILTER_VAR($_POST['name_in'], FILTER_SANITIZE_STRING));
$dept_in = (FILTER_VAR($_POST['dept_in'], FILTER_SANITIZE_STRING));
$information_in = (FILTER_VAR($_POST['information_in'], FILTER_SANITIZE_STRING));
$date_in = $_POST['date_in'];

try 
{
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("INSERT INTO bigdata_admin (id_in, name_in, dept_in, information_in,      date_in) 
                            VALUES (:id_in, :name_in, :dept_in, :information_in, :date_in)");
    $stmt->bindParam(":id_in", $id_in,PDO::PARAM_INT);
    $stmt->bindParam(":name_in", $name_in,PDO::PARAM_STR);
    $stmt->bindParam(":dept_in", $dept_in,PDO::PARAM_STR);
    $stmt->bindParam(":information_in", $information_in,PDO::PARAM_STR);
    $stmt->bindParam(":date_in", $date_in,PDO::PARAM_STR);
    $stmt->execute();
}
    catch(PDOException $e)
{
    echo "Error: " . $e->getMessage();
}
}
$conn = null;
?>

抱歉发帖太长了,任何建议都将不胜感激,非常有帮助

【问题讨论】:

  • $romawi = $getRomawi($month);这就是问题所在,您正在使用 $ 调用函数,因此它被视为变量。删除 $ 并调用类似 getRomawi 的函数
  • 感谢您对@PrabhjotSinghKainth 的回复,但我遇到了另一个错误:致命错误:无法在 C 中重新声明 getRomawi()(之前在 C:\xampp\htdocs\bigweb\fungsi_romawi.php:2 中声明) :\xampp\htdocs\bigweb\fungsi_romawi.php 第 43 行

标签: php mysql mysqli pdo fatal-error


【解决方案1】:

您需要删除 $ 符号:

$romawi = $getRomawi($month);

 $romawi = getRomawi($month);

注意:函数名必须以字母或下划线开头。函数名不区分大小写。

【讨论】:

  • 这不应该作为答案发布,应该是评论。
  • 为什么不应该作为答案发布。我可以知道原因吗?
  • 非常感谢您@Ramki 的建议,但是当我将其更改为您的提示时,我收到一个错误:致命错误:无法重新声明 getRomawi()(之前在 C:\xampp\htdocs\bigweb 中声明\fungsi_romawi.php:2) 在第 43 行的 C:\xampp\htdocs\bigweb\fungsi_romawi.php 中,抱歉有双重评论。
  • 你能检查相同的函数名(getRomawi)是否已经存在?
  • 由简单的印刷错误引起的问题与网站无关。与其回答,不如将其标记为关闭,然后发表评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
相关资源
最近更新 更多