注意:php中未定义的索引

时间:2013-06-17 05:17:17

标签: php mysql phpmyadmin

我搜索了很多,但我真的不知道怎么写isset()你能写下写的地方isset()以及如何写下面的页面 我是php的新手我先做两页是first.php 第二个是insert.php代码如下,但它显示注意:未定义的索引: 如何删除此错误 谢谢

第一页(first.php)

<!DOCTYPE html>
<html>
<body>
<form id="firstform" action="insert.php" method="post">
<center> My First Page in PHP </center>
<center>Name:<input type="text" id="name" size=20>
FatherName: <input type="text" id="fname" size=20> 
Address:<input type="text" id="add" size=20> 
<input type="submit" name="sub">
</form>
</body>
</html>

插入页面(insert.php)

<html>
<body>
<?php
$con=mysqli_connect("localhost","root","khan","first");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO bio(name, fathername , address) 
VALUES
('$_POST[name]','$_POST[fname]','$_POST[add]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

您的问题出在HTML表单中。

<form id="firstform" action="insert.php" method="post">
<center> My First Page in PHP </center>
<center>Name:<input type="text" name="name" id="name" size=20>
FatherName: <input type="text" name="fname" id="fname" size=20> 
Address:<input type="text" name="add" id="add" size=20> 
<input type="submit" name="sub">
</form>

您需要name="variable_key"而不是id=""才能在PHP的$_POST全局变量中使用。表单元素的ID主要用于CSS和JavaScript,而名称是通过表单发送的。因此,由于只有您的提交按钮附加了名称属性,因此仅设置了$_POST['sub']。如果您进行了上述更改,它应该可以正常工作。

但是,要像你问的那样使用isset(),请尝试以下方法:

<?php
if(isset($_POST['name'], $_POST['fname'], $_POST['add'])) {
    // all variables set
    // do form processing here
}
?>

答案 1 :(得分:0)

您可以尝试以下

<html>
<body>
<?php
$con=mysqli_connect("localhost","root","khan","first");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if(isset($_POST['name']) && isset($_POST['fname']) && isset($_POST['add'])) {
// Above is how to use isset in the correct form
// Now you need to protect your database from sql injection 
$name = mysqli_real_escape_string($_POST['name']);
$fname = mysqli_real_escape_string($_POST['fname']);
$add = mysqli_real_escape_string($_POST['add']);
$sql="INSERT INTO bio(name, fathername , address) 
VALUES
('$name','$fname','$add')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
} else { 
echo 'Missing submissions.';
} 
?>

注意:您也不能在以下格式的字符串中使用数组

  
    

( '$ _ POST [名称]', '$ _ POST [FNAME]', '$ _ POST [添加]')“;

  

您可以使用此表格

  
    

( '{$ _ POST [' 名称 ']},'{$ _ POST [ 'FNAME']}”, '{$ _ POST [' 添加 ']}')“;