【问题标题】:Creating a student exam result system建立学生考试成绩系统
【发布时间】:2014-04-13 05:11:53
【问题描述】:

我正在尝试使用 PHP 和 MySQL 数据库创建一个学生考试结果系统。我遇到了两个问题:

  1. 如何为此制作数据库文件?
  2. 我遇到以下错误消息;我该如何解决?

    解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,在第 12 行的 C:\xampp\htdocs\s\display.php 中需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING

这是我的 display.php 代码:
<?php
mysql_connect("WWW.EXAMPLE.COM", "USERNAME", "PASSWORD") or die("Connection Failed");
mysql_select_db("YOUR DATABASE NAME")or die("Connection Failed");

$name = $_POST['name'];
$query = "select * from YOURTABLENAME where REGISTERNUMBER = '$name'";
$result = mysql_query($query);

while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "$line['name']."<br />";
    echo "$line['subject1']."</div></td>"."<br />";
    echo "$line['subject2']."</div></td>"."<br />";
    echo "$line['subject3']."</div></td>"."<br />";
    echo "$line['subject4']."</div></td>"."<br />";
}

?>

这是我的 index.php

<html>
    <form method="post" name="display" action="isplay.php" />
        <b>Enter the register number:</b><br>
        <input type="text" name="name" />
        <input type="submit" value="Search" />
    </form>
 </html>

【问题讨论】:

    标签: php system


    【解决方案1】:

    检查你的报价

     <?php
        mysql_connect("WWW.EXAMPLE.COM", "USERNAME", "PASSWORD") or die("Connection Failed");
        mysql_select_db("YOUR DATABASE NAME")or die("Connection Failed");
        $name = $_POST['name'];
        $query = "select * from YOURTABLENAME where REGISTERNUMBER = '$name'";
        $result = mysql_query($query);
        while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
        {
           echo $line['name']."<br />";
           echo $line['subject1']."</div></td>"."<br />";
           echo $line['subject2']."</div></td>"."<br />";
           echo $line['subject3']."</div></td>"."<br />";
           echo $line['subject4']."</div></td>"."<br />";
        }
    
        ?>
    

    【讨论】:

      【解决方案2】:

      这是因为您的字符串没有匹配的开始和结束引号:

      echo "$line['name']."<br />";
      echo "$line['subject1']."</div></td>"."<br />";
      echo "$line['subject2']."</div></td>"."<br />";
      echo "$line['subject3']."</div></td>"."<br />";
      echo "$line['subject4']."</div></td>"."<br />";
      

      试试这个:

      echo "{$line['name']}<br>";
      echo "{$line['subject1']}</div></td><br>";
      echo "{$line['subject2']}</div></td><br>";
      echo "{$line['subject3']}</div></td><br>";
      echo "{$line['subject4']}</div></td><br>";
      

      您输出的 HTML 也不正确。你应该read a little about how tables work

      如果您希望我们帮助您“使用 MYSQL 数据库在 PHP 中创建学生考试结果系统”,那么您的要求太高了。您应该像其他人一样学习 PHP 和 SQL:学习并使用它。

      【讨论】:

        【解决方案3】:

        您错过了在行获取变量之后关闭 "。关注:

        <?php
        mysql_connect("WWW.EXAMPLE.COM", "USERNAME", "PASSWORD") or die("Connection Failed");
        mysql_select_db("YOUR DATABASE NAME")or die("Connection Failed");
        //added to prevent sql injection
        $name = mysql_real_escape_string($_POST['name']);
        $query = "select * from YOURTABLENAME where REGISTERNUMBER = '$name'";
        $result = mysql_query($query);
        while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
        {
        echo "$line['name']"."<br />";
        echo "$line['subject1']"."</div></td>"."<br />";
        echo "$line['subject2']"."</div></td>"."<br />";
        echo "$line['subject3']"."</div></td>"."<br />";
        echo "$line['subject4']"."</div></td>"."<br />";
        }
        
        ?>
        

        PHP 变量不需要引号,但上面的代码也可以工作,因为双引号 " 会强制将其中的任何变量解析为变量 但要注意单引号不是这种情况引用'

        注意:

        Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

        【讨论】:

        • 在 php 变量周围使用引号是一种很好的做法。即使它没有引号也可以工作,但这并不意味着没问题。我更喜欢始终拥有它们 - 使代码更清晰并加快性能。
        • @PaulDenisevich 您能否详细说明为什么这不是一个好习惯?在可读性方面,我更喜欢将变量从字符串中分离出来(除非字符串中包含很多变量),并且就性能而言,使用 microtime() 检查它,并且没有引号给我的毫秒数更少。也许我错过了什么?
        • @PaulDenisevich 不,在变量周围加上引号是一种偏好。它与“良好实践”无关。至于它使代码更清晰,这是值得商榷的。此外,它对性能几乎没有任何影响。
        • 养成在双引号中使用 {$...} 而不是仅使用 $... 的习惯是很好的,因为有时您需要将变量插入到字符串中而不是它不是对 PHP 来说,哪一部分是变量,哪一部分是字符串是显而易见的。如果您想获得最佳性能,请使用带单引号的字符串连接。
        • @ICanHasCheezburger 是的,对于一个小应用程序它不会影响你的速度,但对于每分钟超过 100000 次加载的严肃应用程序,我猜会。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 2021-02-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多