【问题标题】:PHP: Can't find syntax error [closed]PHP:找不到语法错误[关闭]
【发布时间】:2010-10-25 02:08:10
【问题描述】:

解析错误:语法错误,blah/blah/blah.php 第 1 行中的意外 $end

这是我收到的错误代码

<?php 
include("db.php");

if (isset($_POST['username']) && 
    isset($_POST['password']) && 
    isset($_POST['email']))
{
  //Prevent SQL injections
  $username = mysql_real_escape_string($_POST['username']);
  $email = mysql_real_escape_string($_POST['email']);

  //Get MD5 hash of password
  $password = md5($_POST['password']);

  //Check to see if username exists
  $sql = mysql_query("SELECT username FROM usersystem WHERE username = 'username'");

  if (mysql_num_rows($s > 0))
  {
    die ("Username taken.");
  }

  mysql_query("INSERT INTO usersystem (username, password, email) VALUES ( '$username', '$password', '$email')") 
    or die (mysql_error()); echo "Account created.";
}
?>

我已经检查了未闭合的括号,这不是问题。同样通过对其进行故障排除,我发现 include("db.php");导致问题。当我将其注释掉时,它会很好地加载页面。然而,即使 db.php 完全空白,只是一个空的 .php 文件,它仍然给我同样的错误。我很困惑。有人有什么想法吗?

这是我的 db.php 文件,但老实说,当我让 db.php 完全空白时,我得到了同样的错误。而且我保存正确。

<?php
session_start();
mysql_connect("localhost", "mydatabase", "mypassword");
mysql_select_db("ratherda_jetpackfandango");

function user_login ($username, $password)
{
  //take the username and prevent SQL injections
  //$username = mysql_real_escape_string($username);

  //begin the query
  $sql = mysql_query("SELECT * FROM user WHERE username = 'username' AND password = 'password' LIMIT 1");

  //check to see how many rows were returned
  $rows = mysql_num_rows($sql);

  if ($rows<=0 )
  {
    echo "Incorrect username/password";
  }
  else
  {
    //have them logged in
    $_SESSION['username'] = $username;
  }    
}
?>

【问题讨论】:

  • 有点跑题了——在这个时代,简单地通过 MD5 运行密码已经不安全了。看到这个问题:stackoverflow.com/questions/829838/…
  • “if (mysql_num_rows($s > 0))”这一行应该改写为“if (mysql_num_rows($sql) > 0)”。否则会发出警告信息...

标签: php mysql parsing


【解决方案1】:

发布您的 db.php 文件,问题显然就在那里。意外的 $end 错误通常是由于缺少大括号造成的,因此请检查该文件。

【讨论】:

  • 但是他说即使db.php是空白的,他还是会得到一个意想不到的$end错误……
  • 不太可能。他可能没有编辑正确的文件或正确保存它。
【解决方案2】:

在 php 中,$end 错误通常意味着某处缺少 } 大括号。

【讨论】:

  • 我明白,但我已经检查过了。我使用了记事本++,并且括号与结束括号匹配。
【解决方案3】:

也许您的blah.php 文件包含在另一个blahblah.php 文件中,并且错误在那里?

【讨论】:

    【解决方案4】:

    您确定包含的是您的 db.php 吗?可能是您的 php-paths 中某处的另一个 db.php 被包含在内吗?检查这一点的一种方法是将文件重命名为更独特的名称。

    【讨论】:

      【解决方案5】:

      您在 db.php 中有一个 session_start,这是不允许的。它应该是 blah.php 的第一行。

      <?php
      
      session_start();
      
      require_once("db.php");
      

      【讨论】:

      • 谢谢,这解决了我的很多问题。
      • 只是出于好奇,为什么不允许在那里?
      • 这不是非法的,但是在会话开始上方有其他行有时会阻止设置 cookie。也取决于服务器配置。但总是这样做是为了节省,我花了几个小时来解决这些问题。有关详细信息,请参阅手册 cmets。
      【解决方案6】:

      if (mysql_num_rows($s > 0))

      如果 (mysql_num_rows($s) > 0)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-27
        • 1970-01-01
        • 2016-10-12
        • 2015-02-26
        • 1970-01-01
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多