2013-12-13 25 views
0

这是php中的VALUES错误。它说它是每个单值中的一个未定义的索引。我已经尝试了很长一段时间,但我无法弄清楚问题所在。它在我的数据库中还是在代码中?请帮我:)PHP错误。 “未定义索引”表单中的数据不会插入到mysql数据库中

<html> 
<body> 
<h1>A small example page to insert some data in to the MySQL database using PHP</h1> 
<form action="insert.php" method="post"> 
Firstname: <input type="text" name="navn" /><br><br> 
Lastname: <input type="text" name="adresse" /><br><br> 

<input type="submit" /> 
</form> 

<?php 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("forum", $con); 

$sql="INSERT INTO bruker (navn, adresse) 
VALUES 
('$_POST[navn]', 
'$_POST[adresse]')"; 

if (!mysql_query($sql,$con)) 
{ 
die('Error: ' . mysql_error()); 
} 
echo "1 record added"; 

mysql_close($con) 
?> 

</body> 
</html> 
+1

1)停止使用不推荐使用的'mysql_'函数并切换到MySQLi或PDO 2)不要盲目地将值插入到MySQL查询中。你的代码容易受到SQL注入攻击3)你可以使用'isset()'来检查这个值是否在你的'$ _POST'数组中实际定义。 'print_r($ _ POST);'会列出整个内容。 –

+0

您不应该使用MySql,因为它已被弃用。改用PDO或MySqli! –

+0

您正在试图以错误的方式获取数组的索引。 '$ _POST [navn]'实际上是'$ _POST ['navn']'和'$ _POST ['adresse']''。但是你遇到的问题比这个更大:你盲目地在数据库中插入值。这是一个很大的禁忌。您应该查看准备好的语句并使用'mysqli'来代替。 – Max

回答

1

你的岗位价值会工作,一旦通过

的error_reporting点击提交按钮

<form action="" method="post"> 

<input type="submit" name="submit" /> 

<?php 
if(isset($_POST['submit'])) 
{ 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("forum", $con); 

$sql="INSERT INTO bruker (navn, adresse) 
VALUES 
('$_POST[navn]', 
'$_POST[adresse]')"; 

if (!mysql_query($sql,$con)) 
{ 
die('Error: ' . mysql_error()); 
} 
echo "1 record added"; 

mysql_close($con) 
} 
?> 

你也可以隐藏你的警告(0);

+0

-1为“您的帖子值将工作,一旦提交按钮被点击”.OP已经使用method = post,然后您将点击提交数据将传输到php文件。提交名称是一个很好的做法,但它只有一个提交按钮时不影响任何内容。 –

+0

错误消失了,但是数据没有插入到我的数据库中 – user3097182

+0

ok现在从form edit action =“insert.php”到action =“” – user7789076

1

尽量不要使用旧的mysql函数。改用mysqli或PDO。我更新了BASIC安全性的代码,但准备好的语句提供了更多的安全性。

试试这个:

<?php 
$con = mysqli_connect("localhost","root","pw","dbname"); 
if (mysqli_connect_errno($con)) 
{ 
die('Could not connect: ' . mysqli_connect_error()); 
} 

$navn = mysqli_real_escape_string($con,$_POST['navn']); 
$adresse = mysqli_real_escape_string($con,$_POST['adresse']); 

$sql="INSERT INTO bruker (navn, adresse) 
VALUES 
('$navn', 
'$adresse')"; 

if (!mysqli_query($con,$sql)) 
{ 
die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 

mysqli_close($con); 
?> 

编辑:而你在错误的方式访问您的阵列($_POST[navn]$_POST[adresse])的索引。您必须将索引名称放在单引号中,如$_POST['navn']

+0

它是如何解决操作系统的问题?除安全原因之外,你的代码与操作系统有什么不同? –

+0

那么他访问$ _POST [navn]这是不正确的方式来访问索引。他错过了索引名称周围的“'。 –

+0

你应该写出来告诉他人你在做什么:) +1 –

相关问题