我编写了一个PHP语言函数,从Mysql表中调用$translations,如何从upload.PHP中捕获echo变量?

我编写了一个PHP语言函数,从Mysql表中调用$translations,如何从upload.PHP中捕获echo变量?,php,Php,我的upload.php如下所示 <?php $language = "DE"; //TYPO3 $user = 0; //TYPO3 $target_dir = "php/documents/uploads/"; $target_file = $target_dir.basename($_FILES["rechnung"]["name"]); $uploadOk = 1 ; $documentFileType = strtolower(pathinfo($target_file,PAT

我的upload.php如下所示

<?php

$language = "DE"; //TYPO3
$user = 0; //TYPO3
$target_dir = "php/documents/uploads/";
$target_file = $target_dir.basename($_FILES["rechnung"]["name"]);
$uploadOk = 1 ;
$documentFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

//überprufen ob die rechnung ist schon erfasst
if(isset($_POST["submit"])){
    $check = file_exists($_FILES["rechnung"]["tmp_name"]);
    if($check !== false){
        echo lang("file was successfully uploaded"); //Der Beleg wurde erfolgreich erfasst
    }else{
        echo lang("sorry the file could not be uploaded"); //Entschuldigung, der Beleg wurde bereits erfasst
    }
}

?>
<?php

//Übersetzung funktion

$query = 'SELECT vAbbreviation, vDE FROM rLanguage';

$translations = array();
while loop ($row = $query){
    $translations['vAbbreviation'] = $row['vDE'];
}

echo $translations['error-download'];

?>
我得到以下错误:

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

我该怎么办

  • 因此,我在htdocs/php/-documents(子文件夹)上创建了一个子文件夹
  • 在子文件夹中,我有四个文件:

    一,。central.php 二,。db.php iii.functions.php iv.index.php

  • 然后我使用require语句插入内容。我更喜欢require语句而不是include语句,因为前者会在出现错误时停止脚本,因此更准确

  • My index.php现在看起来像这样:

    <?php 
      require("central.php");
    
      echo "<!DOCTYPE html>\n";
      echo "<html lang = 'DE'>\n"; 
      echo "<head>\n";
      echo "  <meta charset = 'UTF-8'>\n";
      echo "  <meta name='viewport' content='width=device-width, initial-scale=1.0'>\n";
      echo "  <title>document</title>\n";
      echo "</head>\n";
      echo "<body>\n";
      echo "  <form action='index.php' method='POST' enctype='multipart/form-data'>\n";
      echo "  <p>Bitte Mal Datei auswählen:</p>\n";
      echo "  <input type='file' name='document' id='document'>\n";
      echo "  <input type='submit' value='lang(upload)' name='submit'>\n";
      echo "  </form>\n";
      echo "</body>\n";
      echo "</html>\n";
    
      // Deklarationen
      $target_dir = "php/documents/uploads/";
      $target_file = $target_dir.basename($_FILES["document"]["name"]);
      $documentFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    
      // Überprufen, ob das Hochladen erfolgreich war
      if (isset($_POST["submit"])) {
        if (file_exists($_FILES["document"]["tmp_name"])) {
          echo lang("success-download"); // Das Dokument wurde hochgeladen
        }
        else {
          echo lang("error-download"); // Das Dokument konnte nicht hochgeladen werden
        }
      }
    
    ?>
    
    function lang($langAbbreviation) {
        // $varLanguage > TYPO3
        // $varUsername > TYPO3
        require ("db.php");
        $db = mysqli_query($conn, "SELECT * FROM nr_language WHERE cAbbreviation LIKE '$langAbbreviation'");
        if (mysqli_num_rows($db) == 1) {
          while ($row = mysqli_fetch_object($db)) {
            if ($varLanguage == "EN") {
              $info = $row->cEN;
            }  
            else {
              $info = $row->cDE;
            }
          }
        return $info;
        }
      }
    

    提交时,我现在可以从数据库中生成错误语句。

    从您显示的代码片段中,您没有。您正在调用函数
    lang
    ,但从未声明过它。什么是
    lang
    ?当循环($row=$query)时,它应该做什么?您没有执行查询注意:
    if($check!==false)
    可以简化为
    if($check)
    ,如果(存在文件($\u FILES[“rechnung”][“tmp\u name”]),可以再次简化为
    这里有很多错误。您永远不会执行查询,也不会在
    while
    循环中获取结果行,在
    while
    之后还有一个额外的单词
    loop
    function lang($langAbbreviation) {
        // $varLanguage > TYPO3
        // $varUsername > TYPO3
        require ("db.php");
        $db = mysqli_query($conn, "SELECT * FROM nr_language WHERE cAbbreviation LIKE '$langAbbreviation'");
        if (mysqli_num_rows($db) == 1) {
          while ($row = mysqli_fetch_object($db)) {
            if ($varLanguage == "EN") {
              $info = $row->cEN;
            }  
            else {
              $info = $row->cDE;
            }
          }
        return $info;
        }
      }