为什么这不起作用? :/

时间:2013-12-14 17:38:46

标签: php post

我不明白为什么这不起作用?这是一个注册表单,检查是否填写了字段,密码等于重新键入密码,以及数据库中是否已存在。

我收到此错误:解析错误:语法错误,意外T_STRING,期待','或';'在/home/a4550840/public_html/newreg.php第32行

但我已经把';'在第32行......我不明白为什么会出现这种错误。

感谢任何帮助:)。

编辑:修正了错误^并添加了mysql_real_escape_string,但由于某种原因它没有将信息注册到数据库?

编辑:现在有效:),从查询中删除了引文

<?php

include ('connect.php');

if ($_POST['submit']) {

$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$repassword = mysql_real_escape_string($_POST['repassword']);
$email = mysql_real_escape_string($_POST['email']);

if ($username && $password && $repassword && $email){


  if ($password == $repassword) {

      $check = mysql_query("SELECT * FROM members WHERE username='$username' ");
      $countrows = mysql_num_rows($check);

      if ($countrows == 0){

          mysql_query("INSERT INTO members ('username','password','email') VALUES      ('$username','$password','$email') ");

      } else {

        echo 'Username already exists';

      }

  } else {

     echo 'Passwords don'\t match';
  }


  } else {

  echo 'Fill in the fields';  
  }

  } else {

  echo 'Register please';   

}

  ?>

2 个答案:

答案 0 :(得分:3)

你有问题:

echo 'Passwords don't match';

你需要scape单引号:

echo 'Passwords don\'t match';

echo "Passwords don't match";

注意:您的代码容易受到sql注入攻击,您应该先使用 mysql_real_scape_string()将您的参数作为sql查询传递。

我建议:

$username = mysql_real_scape_string($_POST['username']);
$password = mysql_real_scape_string($_POST['password']);
$repassword = mysql_real_scape_string($_POST['repassword']);
$email = mysql_real_scape_string($_POST['email']);

提示:当您正在测试(在开发环境中)mysql查询时,您应该在行尾结合die(mysql_error())以检查您是否遇到如下问题:

mysql_query('your sql') or die(mysql_error()).

如果您有错误,这会导致您的应用死亡,显示mysql错误。

答案 1 :(得分:0)

请参阅this reference

此错误显示遇到问题的最早时间。问题出在该行或前一行。在这种情况下,您没有转义引号,因此解析器在期望,;时找到了其余字符串。如果你看一下代码的颜色,你会更容易看到它。正确的行是

echo 'Passwords don\'t match';