我不明白为什么这不起作用?这是一个注册表单,检查是否填写了字段,密码等于重新键入密码,以及数据库中是否已存在。
我收到此错误:解析错误:语法错误,意外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';
}
?>
答案 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';