【问题标题】:PHP Undefined index inside another if [duplicate]另一个if [重复]中的PHP未定义索引
【发布时间】: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。很高兴您找到了解决方案。

标签: php html mysql sql


【解决方案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 会起作用

      【讨论】:

      • 这里的括号有点多,但为什么这个特定的被否决了?
      猜你喜欢
      • 2011-08-06
      • 1970-01-01
      • 2011-06-18
      • 2014-01-27
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      相关资源
      最近更新 更多