我没有做一段时间的PHP,但我真的没有看到我错过了什么。 我试图将一些数据从FORM插入MYSQL,但它仍然失败。 这是带有FORM的文件:
<html>
<head>
<link type="text/css" rel="stylesheet" href="stylesheet.css"/>
<title>registrace</title>
</head>
<body>
<H1> The Best Page! </H1>
<p>
"Please registrate"
<form action="zpracovani.php" method="post">
Name <input type="text" size="20" name="Name" value=""><br>
Surname <input type="text" size="30" name="Surname" value=""><br>
Username <input type="text" size="30" name="username" value=""><br>
Password <input type="text" size="10" name="password" value=""><br>
Retype password <input type="text" size="10" name="password2" value=""><br>
<input type="image" name="button" value="submit" class="button" src="button.jpg">
</form>
</p>
</body>
</html>
正如您所见,我正在发送数据以进入文件“zpracovani.php”。我测试了我是否连接到mysql服务器(它通过),还检查我是否连接到正确的数据库(也没有probs)。
<html>
<?php
echo "Wait please";
$con=mysql_connect ('localhost','root','');
if (!$con)
{
die ( 'Could not connect: ' . mysql_error());
}
mysql_select_db ('registrace') or die("cannot select DB");
echo @mysql_ping() ? 'true' : 'false';
$sql="INSERT INTO 'registrace'(Name, surname, username, password).
VALUES('$_POST[Name]','$_POST[Surname]','$_POST[username]','$_POST[password]')";
$result=mysql_query($sql);
if($result){
echo("<br>Input data is succeed");
}else{
echo("<br>Input data is fail");`
}
mysql_close($con);
?>
</html>
下面是我制作的mysql表的重写。
ID int(11)
Name varchar(20) latin1_swedish_ci
Surname varchar(30) latin1_swedish_ci
username varchar(30) latin1_swedish_ci
password varchar(10) latin1_swedish_ci
但是,我连接到数据库并更正表,它仍然无法将任何人插入数据库。有人可以看看这个并帮帮我吗?
提前致谢!
答案 0 :(得分:1)
删除'registrace'
中的引号或使用INSERT INTO 'registrace'
中的反引号
示例:
INSERT INTO `registrace`
使用反引号更好。
同时删除以下内容中的点:
$sql="INSERT INTO 'registrace'(Name, surname, username, password).
它应该是:
$sql="INSERT INTO `registrace` (Name, surname, username, password)
重新格式化:
$sql="INSERT INTO `registrace` (Name, surname, username, password)
VALUES
('{$_POST['Name']}','{$_POST['Surname']}','{$_POST['username']}','{$_POST['password']}')";
或遵循以下惯例:
$unsafe_variable = $_POST["user-input"]
$safe_variable = mysql_real_escape_string($unsafe_variable);
mysql_query("INSERT INTO table (column) VALUES ('" . $safe_variable . "')");
注意:我还注意到您的数据库和桌子都使用相同的名称。
确保事实确实如此。
你的数据库:
mysql_select_db ('registrace')
和你的桌子?
INSERT INTO `registrace`
另外,最好增加VARCHAR
的值,并考虑使用MySQLi_
和准备好的语句或PDO。不推荐使用MySQL_
个函数。
请阅读以下文章:
答案 1 :(得分:0)
首先:使用mysqli
第二:摆脱mysql ping
第三:更改:
"......'$_POST[xxx]'......"
成:
"......'{$_POST['xxx']}'....."
答案 2 :(得分:0)
谢谢你们现在正在努力。
顺便说一句,mysql ping只是一个检查,看看我是否连接良好,就像我在原帖中写的那样:)
无论如何,这对你来说非常有帮助