已创建一个HTML表单,该表单应该(填充时)将其保存的数据发送到插入新行的数据库,以便以后使用。但是,我似乎无法让它工作,我收到以下错误:
注意:使用未定义的常量con - 假设' con'在 C:\ xampp \ htdocs \ form \ insert.php 上 4
警告:mysql_query()要求参数1为字符串,在 C:\ xampp \ htdocs \ form \ insert.php 中给出的对象 17
未插入数据
<!DOCTYPE html>
<html>
<head>
<title>Form linked to database</title>
</head>
<body>
<form action="insert.php" method="post">
Name: <input type="text" name="username">
<br>
Email: <input type="text" name="email">
<br>
<input type="submit" value="insert">
</form>
</body>
</html>
<?php
$con = mysqli_connect('localhost','[retracted]','[retracted]');
if(!con) {
echo 'Not connected to server!';
}
if(!mysqli_select_db($con,'tutorial')) {
echo 'Database not selected!';
}
$Name = $_POST['username'];
$Email = $_POST['email'];
$sql = "INSERT INTO person (Name,Email) VALUES ('$Name','$Email')";
if(!mysql_query($con,$sql)) {
echo 'Data not inserted';
} else {
echo 'Data inserted';
}
//header("refresh:2; url=form.html");
?>
我是PHP新手,并关注了以下YouTube tutorial。
我也在本地主机上使用XAMPP。任何帮助表示赞赏。谢谢。
答案 0 :(得分:3)
你应该改变:
if(!con){
echo 'Not connected to server!';
}
为:
if(!$con){
echo 'Not connected to server!';
}
因为你在那里错过了一个美元符号。
此外,您在mysql_
对象mysqli_
上使用了$con
功能:
if(!mysql_query($con,$sql))
将此更改为
if(!mysqli_query($con,$sql))
SQL注入
由于您的查询容易受到SQL注入攻击,因此我建议您查看使用预准备语句或使用mysqli_real_escape_string()
- 但是,这会带来一些问题:{{3} }
答案 1 :(得分:1)
你犯了两个小错误,即
1)忘记在变量名称之前添加$
,即更改
if(!$con){
echo 'Not connected to server!';
}
2)您已与mysqli_connect
关联,但您正尝试在其中使用mysql_query
个功能。所以请更改并使用mysqli_query
if(!mysqli_query($con,$sql)){ }
这是你的问题。我的建议是使用mysqli
或PDO
,这是一种很好的做法。
答案 2 :(得分:0)
您没有使用正确的mySQL查询功能,您已经使用过:
的mysql_query($ CON
您应该使用:
mysqli_query
代替。如果您还有问题,请告诉我。
答案 3 :(得分:-1)
现在你有很多答案,我认为这些都不是正确的。我已经按照您的方式编写了新的代码,但是使用准备好的语句,所以您将保存到SQL注入。
<?php
$con = mysqli_connect('localhost','[retracted]','[retracted]');
if(!$con){
echo 'Not connected to server!';
}
if(!mysqli_select_db($con,'tutorial')){
echo 'Database not selected!';
}
$Name = $_POST['username'];
$Email = $_POST['email'];
if ($stmt = mysqli_prepare($con, "INSERT INTO person (Name, Email) VALUES (?, ?"))) {
mysqli_stmt_bind_param($stmt, "ss", $Name, $Email);
mysqli_stmt_execute($stmt);
echo "Data inserted";
}
else {
echo "Error";
}
mysqli_close($con);
//header("refresh:2; url=form.html");
?>
我认为它应该有效,如果不让我知道。
答案 4 :(得分:-2)
试试这个:
function showdiv(toshow){
$("#contentdiv > div").hide("fast"); //Hide all divs
$("#" + toshow).show("fast"); //Show one specific div
}