Невозможно получить имя таблицы, используя переменную строку MYSQL Ошибка - PullRequest
0 голосов
/ 02 октября 2018
 if ($_GET['category'] == "ebooks")
{ $tableName = $smallsubcodewithoutspace.'_ebooks';
  $sectionTitle = "Ebook";
}
elseif ($_GET['category'] == "syllabus")
{ $tableName = $smallsubcodewithoutspace.'_syllabus';
  $sectionTitle = "Syllabus";
}
elseif ($_GET['category'] == "pnotes")
{ $tableName = $smallsubcodewithoutspace.'_pnotes';
  $sectionTitle = "Practical Note";
}
elseif ($_GET['category'] == "assignments")
{ $tableName = $smallsubcodewithoutspace.'_assignments';
  $sectionTitle = "Assignment";
}
elseif ($_GET['category'] == "tnotes")
{ $tableName = $smallsubcodewithoutspace.'_tnotes';
  $sectionTitle = "Theory Notes";
}

//if form has been submitted process it
    if(isset($_POST['submit'])){

        $_POST = array_map( 'stripslashes', $_POST );

        //collect form data
        extract($_POST);

        //very basic validation
        if($contentTitle ==''){
            $error[] = 'Please enter the Content Title !';
        }



        if($contentLink ==''){
            $error[] = "Please enter the Content Link !";
        }

        if(!isset($error)){

            try {

                //insert into database
                $stmt = $db->prepare("INSERT INTO `$tableName` (contentTitle,contentLink,contentAuthor) VALUES (:contentTitle, :contentLink, :contentAuthor)") ;
                $stmt->execute(array(
                    ':contentTitle' => $contentTitle,
                    ':contentLink' => $contentLink,
                                        ':contentAuthor' => $contentAuthor
                ));

                //redirect to index page
                header('Location: add-content.php?notallowed=true');
                exit;

            } catch(PDOException $e) {
                echo $e->getMessage();
            }

        }

    }

    //check for any errors
    if(isset($error)){
        foreach($error as $error){
            echo '<div align="center" class="alertpk"><div class="alert alert-warning" role="alert">'.$error.'</div></div>';
        }
    }

На самом деле проблема началась, когда я попытался вставить имя таблицы с переменной.Таблицы существуют в базе данных.Всего существует 5 баз данных, в которые я буду вставлять данные в соответствии с выбором пользователей, но при выполнении формы выдается сообщение об ошибке:

SQLstate [42000]: СИНТАКСИЧЕСКАЯ ОШИБКА ИЛИ НАРУШЕНИЕ ДОСТУПА 1103, НЕПРАВИЛЬНЫЙ СТОЛИМЯ ''

Ответы [ 3 ]

0 голосов
/ 02 октября 2018

var выведите вашу переменную, напишите, чтобы увидеть, какое значение подходит.

0 голосов
/ 02 октября 2018

Я получил решение, я переместил раздел tableVariables внутрь try, и теперь он работает.

0 голосов
/ 02 октября 2018

Ошибка INCORRECT TABLE NAME '' ошибка означает, что у вас нет значения в $tableName.Ваш $_GET['category'] не получает распознанное значение или extract($_POST) меняет $tableName на пустое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...