在php错误中将数据附加到文件中

时间:2013-11-16 03:06:21

标签: php

以下代码将文件中的数据读入一系列数组,以及来自其他网页的数据,根据表单和数组中的值比较数据,如果未找到匹配项,则将数据附加到文件

<?php
$file = fopen("Student.txt", "a+") or exit("Unable to open file!");
$StudentID = array();
$StudentPassword = array();
$StudentFname = array();
$StudentLname = array();
$StudentDOB = array();
$StudentGPA = array();
$x = 0;
$return = 0;

while(!feof($file)){
  $StudentID[$x] = fgets($file);
  $StudentPassword[$x] = fgets($file);
  $StudentFname[$x] = fgets($file);
  $StudentLname[$x] = fgets($file);
  $StudentDOB[$x] = fgets($file);
  $StudentGPA[$x] = fgets($file);
  $x = $x + 1;
  }

  $ID = $_POST["StudentID"];
  $Pass = $_POST["StudentPass"];
  $First = $_POST["StudentFname"];
  $last = $_POST["StudentLname"];
  $DOB = $_POST["D.O.B."];
  $GPA = $_POST["GPA"];

  for ($y=0; $y<$x; $y++){
    if (strcasecmp($ID,$StudentID[$y]) == -2){
    $return = 1;
    break;
  }
  }
  if ($return == 0){
      echo $ID "<br>";
      fputs($ile, $ID);
      fputs($file, $Pass);
      echo $First "<br>";
      fputs($file, $First);
      echo $last <"br>";
      fputs($file, $last);
      echo $DOB "<br>";
      fputs($file, $DOB);
      echo $GPA "<br>";
      fputs($file, $GPA);

      echo "Student successfully added";
 }
  else{
      echo "Duplicate ID found, input rejected";
  }
  fclose($file);
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Student Addition</title>
    </head>
    <body>
        <p>Please return to the <a href ="index.html">Main Menu</a></p>
    </body>
</html>

除了最后一部分,一切都有效。如果找不到匹配项,它应该附加数据,但是就其而言,附加部分不会将数据附加到文件中,而是保持原样。如果有人知道为什么会这样,那么非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

尝试使用0代替-2作为strcasecmp()的结果值,因为0表示匹配,在您的情况下,如果匹配则不应添加。

for ($y=0; $y<$x; $y++){
  if (strcasecmp($ID,$StudentID[$y]) == 0){
  $return = 1;
  break;
 }
}

请参阅PHP Documentation