Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义索引-即使使用Isset If语句_Php_Sql_Database - Fatal编程技术网

Php 未定义索引-即使使用Isset If语句

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"

有人能告诉我为什么我的代码在这里出现未定义的索引错误吗。 我在项目的其他部分使用了if(isset)条件 通过研究我原来未定义的索引错误和ISSET修复了我的问题。但由于某种原因,它在这里不起作用,我不明白为什么

此表单正在发布输入:

<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);

?>