注意:第XX行的未定义索引

时间:2013-12-11 13:17:59

标签: php html mysql mysqli

我正在使用php创建一个数据库并在html中查看表格。在我的编码中,我编写了一个“添加/插入”函数,用于在表格中插入一个提交按钮。当选择提交按钮时,它会转到上面列出的错误消息。我不知道我改变了什么,我昨晚(在另一台电脑上)运行了这个代码,一切正常!任何人都有任何想法??

以下是我的插入脚本的代码,用于TABLE,INSERT信息,add.html和insert.php

<?php
$con=mysqli_connect("localhost","root","","Franchise_Call_Log");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// Create table
$sql="CREATE TABLE caller_info(caller_id int(11) unsigned auto_increment primary key not null, 
Firstname varchar(35) not null, Lastname varchar(35) not null, 
Franchise varchar(25) not null)";

// Execute query
if (mysqli_query($con,$sql))
{
echo "Table caller_info created successfully";
}
else
{
echo "Error creating table: " . mysqli_error($con);
}
?> 

<?php
$con=mysqli_connect("localhost","root","","Franchise_Call_Log");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

mysqli_query($con,"INSERT INTO caller_info (Firstname, Lastname, franchise)
VALUES ('Peter', 'Griffin',Minneapolis)");

mysqli_query($con,"INSERT INTO caller_info (Firstname, Lastname, Franchise) 
VALUES ('Maggie', 'DeJesus',Virginia)");

mysqli_close($con);
?> 

<html>
<body>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
Franchise: <input type="text" name="franchise">
<input type="submit">
</form>

</body>
</html>

<?php
$con=mysqli_connect("localhost","root","","Franchise_Call_Log");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO caller_info (Firstname, Lastname, Franchise)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[franchise]')";

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

mysqli_close($con);
?> 

*的 更新 我能够通过更改我的文件的名称来修复上面的问题,但现在再次运行所有内容我遇到了这条消息:

注意:未定义的索引:第11行的C:\ xampp \ htdocs \ Final Tests \ insert.php中的名字

注意:未定义的索引:第11行的C:\ xampp \ htdocs \ Final Tests \ insert.php中的姓氏

注意:未定义的索引:第11行的C:\ xampp \ htdocs \ Final Tests \ insert.php中的特许经营权  已添加1条记录

虽然只是一个通知,但在选择表时,新记录不存在。某个地方有一种脱节,我没有抓住。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您使用

$sql="INSERT INTO caller_info (Firstname, Lastname, Franchise)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[franchise]')";

但是你引用$ _POST值(例如:$ _POST [xyz]),你没有引用xyz名称。它应该是:

$sql="INSERT INTO caller_info (Firstname, Lastname, Franchise)
VALUES
('{$_POST['firstname']}','{$_POST['lastname']}','{$_POST['franchise']}')";

我在$ _POST ['xyz']周围添加了{} -brackets,因此php可以正确识别变量。当然,您现在需要进行SQL注入(在How can I prevent SQL injection in PHP?阅读更多内容)

答案 1 :(得分:0)

如果您将表单提交到同一页面,请将操作字段留空:

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

指定提交按钮的名称:

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

如果设置了提交(按下提交),则将值插入数据库:

if(isset($_POST['submit'])){

$sql="INSERT INTO caller_info (Firstname, Lastname, Franchise)
      VALUES('".$_POST['firstname']."','".$_POST['lastname']."',
             '".$_POST['franchise']."')";

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