我有一个名为“culvers”的MySQL数据库,其中包含user_id INT(4)自动递增,full_name varchar(20)和user_name varchar(20)。我正在尝试使用此HTML表单向表中添加值,但它无法正常工作。我已经探索了几十个教程和帮助网站,但它仍然无法正常工作。我甚至将代码放在另一个托管服务提供商上,看看是不是问题。当我点击“添加”时,我被带到一个空白页面(这是预期的,因为我没有成功/错误消息)但表单数据没有插入到数据库表中。
另外,我知道我应该清理我的输入,但现在不是问题。 (至少我不这么认为)
这是form.html代码:
<html>
<head>
<title>Add User to Table</title>
</head>
<body>
<h1>Add User</h1>
<form action="adduser.php" method="POST">
<label>Full name:</label>
<input id="postname" type="text" name="fullname">
<label>Username:</label>
<input id="postuser" type="text" name="username">
<input type="submit" name="submit" value="Add">
</form>
</body>
</html>
这是adduser.php代码:
<?php
if(isset($_POST['submit'])){
$connection = mysql_connect("localhost", "xxxx", "xxxxxxxxxx");
mysql_select_db("culvers");
$fullnameOfUser = $_POST['fullname'];
$usernameOfUser = $_POST['username'];
$sql = "INSERT INTO users (full_name, user_name) VALUES ('$fullnameOfUser', '$usernameOfUser');
$result = mysql_query($sql, $connection);
mysql_close($connection);
}else{
echo "Error no form data";
}
?>
非常感谢你的帮助!
答案 0 :(得分:0)
你忘了关闭双引号!
'$fullnameOfUser', '$usernameOfUser')";
----^ // Add one there
$sql = "INSERT INTO `users` (`full_name`, `user_name`) VALUES ('$fullnameOfUser', '$usernameOfUser')";
您需要认真切换到PreparedStatements
,因为您的上述代码直接倾向于SQL注入。
答案 1 :(得分:0)
你在这行中有错误:
$sql = "INSERT INTO users (full_name, user_name) VALUES ('$fullnameOfUser', '$usernameOfUser');
你没有结尾"
这一行应该是:
$sql = "INSERT INTO users (full_name, user_name) VALUES ('$fullnameOfUser', '$usernameOfUser')";
您应该使用mysqli_*
或PDO
,因为mysql_*
的所有功能都已弃用。
答案 2 :(得分:0)
您错过了SELECT Query
末尾的双引号 $sql = "INSERT INTO users (full_name, user_name) VALUES ('$fullnameOfUser', '$usernameOfUser')";
答案 3 :(得分:0)
首先,如果它不是拼写错误,则需要为查询添加双引号。
$sql = "INSERT INTO users (full_name, user_name) VALUES ('$fullnameOfUser', '$usernameOfUser')";
如果仍然存在问题,则打印查询并直接在phpmyadmin中运行,以查看查询没有问题。
注意:您正在使用mysql_*
功能。请使用PDO
或Mysqli
,因为您当前的代码易于Sql Injection.
答案 4 :(得分:0)
在提交表单数据之前,您需要启动mysql服务器。 你可以通过使用xampp软件启动mysql服务器。一旦你通过xampp软件启动你的mysql服务器,你也可以找到mysql服务器端口号。 包含数据库的实际格式是,
mysql_connect("localhost:port/database","username","password");