另一个if [重复]中的PHP未定义索引
Posted
技术标签:
【中文标题】另一个if [重复]中的PHP未定义索引【英文标题】:PHP Undefined index inside another if [duplicate] 【发布时间】:2018-06-21 10:42:55 【问题描述】:在这种情况下,我在第 2 行收到关于未定义索引的错误:
if ($_POST['go'] == 'create')
我知道我可以使用 isset
修复它,但我不知道如何在另一个 if 语句中进行修复。
谢谢
if (isset($_GET['createDB']))
if ($_POST['go'] == 'create')
$handle = fopen($databaseSchema, "r");
$createTable_events = fread($handle, filesize($databaseSchema));
$user=$_POST['user'];
$pass=$_POST['pass'];
$clientHost= (isset($_POST['host']) ? $_POST['host'] : 'localhost');
try
$dbh = null;
$dbh = new PDO("mysql:host=$DB_HOST", $user, $pass);
// create database
$dbh->exec("CREATE DATABASE `".$DATABASE."`;");
// Create waf-fle user
$dbh->exec("CREATE USER '".$DB_USER."'@'".$clientHost."' IDENTIFIED BY '".$DB_PASS."';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES ON `".$DATABASE."`.* TO '".$DB_USER."'@'".$clientHost."';
FLUSH PRIVILEGES;");
catch (PDOException $e)
die("DB ERROR: ". $e->getMessage());
【问题讨论】:
可以选择if (isset($_POST['go']) && $_POST['go'] == 'create')
吗?
如果以下答案之一解决了您的问题,您应该接受它(单击相应答案旁边的复选标记)。这有两件事。它让每个人都知道您的问题已得到您满意的解决,并为帮助您的人提供帮助。 See here 以获得完整的解释。
解决方案应该作为答案添加,不是作为对问题的编辑。问题的连续性使网站对所有访问者都很有用,对答案进行投票的能力也是如此。我正在回滚编辑以删除假定的“答案”。
@artmasterpl,建议在对您最有帮助的答案中添加复选标记。如果建议的答案对您没有帮助,您也可以自己添加和接受答案。还请投票您认为有用的任何内容。这些复选标记和赞成票激励 SO 志愿者继续分享他们的知识,并帮助回答您的问题。谢谢,欢迎来到 SO。很高兴您找到了解决方案。
【参考方案1】:
use 设置为 'isSet' 像这样
if(isSet($_POST['data']))
if(isSet($_POST['data2']))
//code here
【讨论】:
【参考方案2】:这应该可以工作
if (isset($_GET['createDB']))
if (isset($_POST['go']) && $_POST['go'] == 'create')
$handle = fopen($databaseSchema, "r");
$createTable_events = fread($handle, filesize($databaseSchema));
$user=$_POST['user'];
$pass=$_POST['pass'];
$clientHost= (isset($_POST['host']) ? $_POST['host'] : 'localhost');
try
$dbh = null;
$dbh = new PDO("mysql:host=$DB_HOST", $user, $pass);
// create database
$dbh->exec("CREATE DATABASE `".$DATABASE."`;");
// Create waf-fle user
$dbh->exec("CREATE USER '".$DB_USER."'@'".$clientHost."' IDENTIFIED BY '".$DB_PASS."';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES ON `".$DATABASE."`.* TO '".$DB_USER."'@'".$clientHost."';
FLUSH PRIVILEGES;");
catch (PDOException $e)
die("DB ERROR: ". $e->getMessage());
【讨论】:
【参考方案3】:同时使用 isset 和 !empty。
if (isset($_GET['createDB']))
if (isset($_POST['go']) && $_POST['go'] == 'create')
$handle = fopen($databaseSchema, "r");
$createTable_events = fread($handle, filesize($databaseSchema));
$user=$_POST['user'];
$pass=$_POST['pass'];
$clientHost= (isset($_POST['host']) ? $_POST['host'] : 'localhost');
try
$dbh = null;
$dbh = new PDO("mysql:host=$DB_HOST", $user, $pass);
// create database
$dbh->exec("CREATE DATABASE `".$DATABASE."`;");
// Create waf-fle user
$dbh->exec("CREATE USER '".$DB_USER."'@'".$clientHost."' IDENTIFIED BY '".$DB_PASS."';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES ON `".$DATABASE."`.* TO '".$DB_USER."'@'".$clientHost."';
FLUSH PRIVILEGES;");
catch (PDOException $e)
die("DB ERROR: ". $e->getMessage());
【讨论】:
现在已编辑。【参考方案4】:if (isset($_GET['createDB']))
if ((isset($_POST['go'])) && ($_POST['go'] == 'create'))
// Your Code
同样的 isset 会起作用
【讨论】:
这里的括号有点多,但为什么这个特定的被否决了?以上是关于另一个if [重复]中的PHP未定义索引的主要内容,如果未能解决你的问题,请参考以下文章
注意:未定义的索引:函数include()中的und [重复]