Php 未定义索引-即使使用Isset If语句
有人能告诉我为什么我的代码在这里出现未定义的索引错误吗。 我在项目的其他部分使用了if(isset)条件 通过研究我原来未定义的索引错误和ISSET修复了我的问题。但由于某种原因,它在这里不起作用,我不明白为什么 此表单正在发布输入:Php 未定义索引-即使使用Isset If语句,php,sql,database,Php,Sql,Database,有人能告诉我为什么我的代码在这里出现未定义的索引错误吗。 我在项目的其他部分使用了if(isset)条件 通过研究我原来未定义的索引错误和ISSET修复了我的问题。但由于某种原因,它在这里不起作用,我不明白为什么 此表单正在发布输入: <form action="addAlbum_Processed.php" method="POST"> <p>Enter artistID of Artist<input type="number" name="artist_id"
<form action="addAlbum_Processed.php" method="POST">
<p>Enter artistID of Artist<input type="number" name="artist_id" maxlength="2" size="2"></p>
<p>Enter name of Album to be created<input type="text" name="album_name" size="20"></p>
<input type="submit" name="submit" value="submit"></form>
输入艺术家的艺术家ID
输入要创建的相册的名称
此页面正在处理表单输入并更新我的数据库中的albums表:
<?php
$connection = mysql_connect('localhost','root','')
or die(mysql_error());
echo "Connected to php Server <br>";
or die("Could not select assi2 database");
echo "Connected to assi2 database <br>";
if(isset($_POST['submit']))
{
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
}
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
$sqlQuery = "SELECT * FROM albums WHERE album = '{$album_name}'";
$result = mysql_query($sqlQuery, $connection) or die("Selection Query Failed !!!");
if (mysql_num_rows($result) != 0)
{
header ("Location: Album_Exists.html");
}
else
{
$sqlInsert = "INSERT INTO albums (ArtistID, Album, delete_marker)
VALUES ('{$artist_id}','{$album_name}','delete_marker = 0')";
$result = mysql_query($sqlInsert, $connection) or die("Selection Query Failed !!!");
header ("Location: addAlbum_Processed.php");
}
mysql_close($connection);
?>
|首先
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
|\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu重复
您正在获取变量两次。如果条件足够,则只能获取一次。同时对这两个变量使用isset
if(isset($_POST['submit']))
{
if isset($_POST['album_name'])
$album_name = $_POST['album_name'];
if isset($_POST['artist_id'])
$artist_id = $_POST['artist_id'];
}
尝试类似于addalbam\u process.php的方法
<?php
$connection = mysql_connect('localhost','root','')
or die(mysql_error());
echo "Connected to php Server <br>";
or die("Could not select assi2 database");
echo "Connected to assi2 database <br>";
if(isset($_POST['submit']))
{
if(isset($_POST['albam_name']){$album_name = $_POST['album_name']};
if(isset($_POST['artist_id']){$artist_id = $_POST['artist_id']};
}
$sqlQuery = "SELECT * FROM albums WHERE album = '{$album_name}'";
$result = mysql_query($sqlQuery, $connection) or die("Selection Query Failed !!!");
if (mysql_num_rows($result) != 0)
{
header ("Location: Album_Exists.html");
}
else
{
$sqlInsert = "INSERT INTO albums (ArtistID, Album, delete_marker)
VALUES ('{$artist_id}','{$album_name}','delete_marker = 0')";
$result = mysql_query($sqlInsert, $connection) or die("Selection Query Failed !!!");
header ("Location: addAlbum_Processed.php");
}
mysql_close($connection);
这是您的问题的一个小例子:
if(isset($_POST['submit']))
{
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
}
在使用其他字段之前,请检查是否已过帐submit
表单字段。到目前为止,一切顺利。(我会检查将要使用的字段,但至少您正在检查一些内容。)
但是:
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
无论如何,您都要使用字段
更重要的是,如果表单没有被发布,你不会一直尝试插入内容。因此,每当有流氓蜘蛛访问您的页面时,您的数据库中就会出现一个空白相册
这甚至没有提到您仍然在使用mysql\u query
这里缺少
试试这样的
if(isset($_POST['submit']))
{
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
}
有几件事
这一行'delete\u marker=0'
很可能会读作
值({$artist\u id},{$album\u name},'0')
或值({$artist\u id},{$album\u name}',0)
当我读到它时,'delete\u marker=0'
您正试图在delete\u marker
列(ArtistID,Album,delete\u marker)
或,您正试图使用WHERE delete_marker=0
子句,该子句不能用于插入到中,而是用于更新或选择
你的if(isset($\u POST['submit'])
条件语句应该包装你的整个代码,而不仅仅是你的两个表单变量,因为它的基本意思是“好的,分配这两个变量,如果没有设置,那么忽略其余的。”
另外,您正在重复这两个输入变量
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
(我将您的整个代码包装在if(isset($\u POST['submit'])中)
条件语句中,顺便说一句
旁注:如果您遇到数据库连接问题,请改用此选项:
$connection = mysql_connect('localhost', 'root', '');
if (!$connection) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
PHP试试看:
旁注:如果此行失败值({$artist\u id},{$album\u name}',0)
在0
周围加引号,如'0'
<?php
$connection = mysql_connect('localhost','root','')
or die(mysql_error());
echo "Connected to php Server <br>";
or die("Could not select assi2 database");
echo "Connected to assi2 database <br>";
if(isset($_POST['submit']))
{
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
$sqlQuery = "SELECT * FROM albums WHERE album = '{$album_name}'";
$result = mysql_query($sqlQuery, $connection) or die("Selection Query Failed !!!");
if (mysql_num_rows($result) != 0)
{
header ("Location: Album_Exists.html");
}
else
{
$sqlInsert = "INSERT INTO albums (ArtistID, Album, delete_marker)
VALUES ('{$artist_id}','{$album_name}', 0)"; // or add quotes around the zero
$result = mysql_query($sqlInsert, $connection) or die("Selection Query Failed !!!");
header ("Location: addAlbum_Processed.php");
}
} // closing brace for if(isset($_POST['submit']))
mysql_close($connection);
?>
mysql\u query
已被弃用。请查看mysqli或PDO。它们不再被维护。请参阅?改为了解,并使用或-将帮助您决定哪个。如果您选择PDO,'delete\u marker=0'
没有意义,如果任何内容可能应被读取为值(“{$artist\u id}”,“{$album\u name}”,0)
或值(“{$artist\u id}”,“{$album\u name}”,“0”)
另外,去掉你的第二个$album\u name=$\u POST['album\u name'];$artist\u id=$\u POST['artist\u id'];
你好,meddy,在原始文件中。复制和粘贴时我错过了它。抱歉,祝你好运
<?php
$connection = mysql_connect('localhost','root','')
or die(mysql_error());
echo "Connected to php Server <br>";
or die("Could not select assi2 database");
echo "Connected to assi2 database <br>";
if(isset($_POST['submit']))
{
$album_name = $_POST['album_name'];
$artist_id = $_POST['artist_id'];
$sqlQuery = "SELECT * FROM albums WHERE album = '{$album_name}'";
$result = mysql_query($sqlQuery, $connection) or die("Selection Query Failed !!!");
if (mysql_num_rows($result) != 0)
{
header ("Location: Album_Exists.html");
}
else
{
$sqlInsert = "INSERT INTO albums (ArtistID, Album, delete_marker)
VALUES ('{$artist_id}','{$album_name}', 0)"; // or add quotes around the zero
$result = mysql_query($sqlInsert, $connection) or die("Selection Query Failed !!!");
header ("Location: addAlbum_Processed.php");
}
} // closing brace for if(isset($_POST['submit']))
mysql_close($connection);
?>