我正在关注一些视频教程。但每当我运行代码时,它会显示此错误。 在数据库中,我的数据库名称是phplogin,我的表名是users。我的列名是id,用户名,密码和名称。 erorr显示的是:
Parse error: syntax error, unexpected ''".$_POST['' (T_CONSTANT_ENCAPSED_STRING) in C:\xampp1\htdocs\firstlogin\regiser.php on line 8
代码在。
include_once ("db/phplogin");
if(isset($_POST['submit']));
{
$query = "insert into users(username,password,name) values ("'".$_POST['username']."','".$_POST['password']."','".$_POST['name']."'")";
if(mysql_query($query))
{
echo "data inserted";
}
else
{
echo "data not inserted";
}
}
?>
<html>
<head>
</head>
<body>
<form action='regiser.php' method='POST'>
Name:<input type ='text' name='Name' placeholder='Name'><br>
Username:<input type ='text' name='Username' placeholder='Username'><br>
Password:<input type ='password' name='Password' placeholder='Password'> <br>
<input type='submit' name='submit' value='Register'>
</form>
</body>
</html>
答案 0 :(得分:2)
更改此行:
$query = "insert into users(username,password,name) values ('".$_POST['username']."','".$_POST['password']."','".$_POST['name']."')";
但是,这很危险。添加此行以清除输入,然后将其保存在数据库中:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$input = array_map('mysqli_real_escape_string', $_POST);
$query = "insert into users(username,password,name) values ('".$input['username']."','".$input['password']."','".$input['name']."')";
}
更好的方法是使用具有结合参数的PDO。它是安全的,它为未来做好了准备(您使用已弃用的mysql_query()):
更新:使用小写表单字段名称更容易,因为PHP通常区分大小写(取决于底层操作系统)。见How can I make my local server case-sensitive?
答案 1 :(得分:1)
更新代码(错误如下所列)
<?
include_once ("db/phplogin.php");
if(isset($_POST['submit']));
{
$query = "insert into users(username,password,name) values ('".$_POST['Username']."','".$_POST['Password']."','".$_POST['Name']."')";
if(mysql_query($query)) {
echo "data inserted";
} else {
echo "data not inserted";
}
}
?>
因为你在@William Madede的答案中说了这个错误。
警告:include_once(db / phplogin):无法打开流:没有这样的 第5行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php中的文件或目录
警告:include_once():无法打开'db / phplogin'以包含它 (include_path ='。; C:\ xampp1 \ php \ PEAR')in 第5行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php
注意:未定义 index:第8行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php中的用户名
注意:未定义的索引:密码在 第8行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php
注意:未定义的索引:第8行的C:\ xampp1 \ htdocs \ firstlogin \ regiser.php中的名称
<强>误强>
$_POST['username']
更改为$_POST['Username']
$_POST['password']
更改为$_POST['Password']
$_POST['name']
更改为$_POST['Name']
$query
db/phplogin
更改为db/phplogin.php
或提供phplogin.php
[注意:Mysql已弃用。而是使用mysqli
或PDO
]
答案 2 :(得分:0)
因为不必要的双引号...... 更新
$query = "insert into users(username,password,name) values ("'".$_POST['username']."','".$_POST['password']."','".$_POST['name']."'")";
要
$query = "insert into users(username,password,name) values ('".$_POST['username']."','".$_POST['password']."','".$_POST['name']."')";
答案 3 :(得分:0)
您还可以使用插入查询,如下所示:
if(isset($_POST['submit']));
{
$u = $_POST['Username'];
$p = $_POST['Password'];
$n = $_POST['Name'];
$query = "insert into users(username,password,name) values ('$u','$p','$n')";
if(mysql_query($query))
{
echo "data inserted";
}
else
{
echo "data not inserted";
}
}