0

检查我的代码,每次我按下提交它都会告诉我......

解析错误:语法错误,第 21 行 /1111111111/2222222222222222222/33333333/444444444444444444444444444 中的意外 T_STRING

它令人沮丧。我以为我做对了。这是我的 php 文件:

<?php
    $email = $_POST['email'];
    if ($username == null ||$email == null ||$password == null ) 
{ 
die("You must fill out everything on the form!"); 
} 
else 
{ 
//continue...

}  
$conn = mysql_connect("$############", "$############","$#############") or                die(mysql_error());
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
else 
{ 
mysql_select_db("xxxxxxxxx_xxxxx", $conn);

$alreadyexists = mysql_query(SELECT password FROM login WHERE email = $email); 

if ($alreadyexists != null) 
{ 
die('This email has already been registered. Please use a different email.'); 
}  
$alreadyexists = mysql_query(SELECT password FROM login WHERE username exist =     $username); 

if ($alreadyexists != null)  
{ 
die('This username has already been registered. Please use a different email.'); 
}  
mysql_query("INSERT INTO Persons (username,email,password) 
VALUES ($username,$email,$password)");
}  
?>

您是否发现任何问题,如果有,请说明并帮助我修复它,或提供替代注册表单。我使用 000webhost,我应该切换到另一个托管服务提供商,因为那里的连接很难使用。

4

3 回答 3

2

您的查询缺少引号:

$alreadyexists = mysql_query(SELECT password FROM login WHERE email = $email);

应该

$alreadyexists = mysql_query("SELECT password FROM login WHERE email = $email");
于 2013-09-25T02:46:22.320 回答
0

应引用您的 SQL 查询:

<?php
    $email = $_POST['email'];
    if ($username == null ||$email == null ||$password == null ) 
{ 
die("You must fill out everything on the form!"); 
} 
else 
{ 
//continue...

}  
$conn = mysql_connect("$############", "$############","$#############") or                die(mysql_error());
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
else 
{ 
mysql_select_db("xxxxxxxxx_xxxxx", $conn);

$alreadyexists = mysql_query("SELECT password FROM login WHERE email = $email"); 

if ($alreadyexists != null) 
{ 
die('This email has already been registered. Please use a different email.'); 
}  
$alreadyexists = mysql_query("SELECT password FROM login WHERE username exist =     $username"); 

if ($alreadyexists != null)  
{ 
die('This username has already been registered. Please use a different email.'); 
}  
mysql_query("INSERT INTO Persons (username,email,password) 
VALUES ($username,$email,$password)");
}  
?>

但请注意,您的代码是针对 sql 注入攻击打开的,因为您没有处理来自客户端的数据。

自 PHP 5.5.0 起,mysql 扩展也被弃用,并将在未来被删除。我建议你使用 PDO_MySQL。

于 2013-09-25T02:52:49.567 回答
0

您使用的是什么版本的 PHP?自 PHP 5.5.0 起,Mysql_ 已被弃用,未来将被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。话虽如此,它仍然可以工作,但如果您现在开始,请使用 Mysqli 或 PDO。什么时候应该使用 MySQLi 而不是 MySQL?

阅读验证和清理输入。你学会如何正确缩进了吗?

你已经使用了 $conn 和 $con 。使用一致的变量名;它永远不会返回该错误。

$conn = mysql_connect("$############", "$############","$#############") or                die(mysql_error());
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 

那么,你确定它连接数据库成功了吗?如果是,请确保您的查询被“”包围。这可能是你的问题。您查看了错误告诉您的内容对吗?21号线?不要害怕玩耍,使用示例并注意他们所做的小事(提供一个很好的示例)。如果您不理解某些代码,请使用php 手册阅读

于 2013-09-25T02:59:24.160 回答