PHP Uncaught PDOException: SQLSTATE [HY000]: общая ошибка: 2031 - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать свою собственную CMS ... Я работаю над отображением страниц ... Я делаю это, анализируя URL-адрес, и в зависимости от этого я определяю, будет ли это сообщение в блоге или обычная страница ...

private function parsujURL($url)
{
    $naparsovanaURL = parse_url($url);
    $naparsovanaURL["path"] = ltrim($naparsovanaURL["path"], "/");
    $naparsovanaURL["path"] = trim($naparsovanaURL["path"]);

    if (strpos($naparsovanaURL["path"], "/") !== false)
        $rozdelenaCesta = explode("/", $naparsovanaURL["path"]);
    else
        $rozdelenaCesta = array($naparsovanaURL["path"]);

    return $rozdelenaCesta;
}
public function zpracuj($parametry)
{
    $naparsovanaURL = $this->parsujURL($parametry[0]);

    if(empty($naparsovanaURL[0]))
        $this->presmeruj('clanek/uvod');
    // kontroler je 1. parametr URL
    $tridaKontroleru = $this->pomlckyDoVelbloudiNotace(array_shift($naparsovanaURL)) . 'Kontroler';

    if (file_exists('kontrolery/' . $tridaKontroleru . '.php'))
        $this->kontroler = new $tridaKontroleru;
    elseif (SpravceStranek::dotazNaStranku($naparsovanaURL)>0)
        $this->kontroler = new StrankyKontroler();
    else
        $this->presmeruj('chyba');
    //Volání kontroleru
$this->kontroler->zpracuj($naparsovanaURL);

Но когда я набираю localhost / onas (о нас (как и должно быть)), он просто показывает ошибку

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2031 in C:\xampp\htdocs\Modely\Db.php:23 Stack trace: #0 C:\xampp\htdocs\Modely\Db.php(23): PDOStatement->execute(Array) #1 C:\xampp\htdocs\Modely\SpravceStranek.php(43): Db::dotazJeden('SELECT `stranka...', Array) #2 C:\xampp\htdocs\Kontrolery\SmerovacKontroler.php(42): SpravceStranek::dotazNaStranku(Array) #3 C:\xampp\htdocs\index.php(21): SmerovacKontroler->zpracuj(Array) #4 {main} thrown in C:\xampp\htdocs\Modely\Db.php on line 23

Это относится к этим строкам ... более конкретнодля выполнения с execute ...

    public static function dotazJeden($dotaz, $parametry = array())
{
    $navrat = self::$spojeni->prepare($dotaz);
    $navrat->execute($parametry);
    return $navrat->fetch();
}

$dotaz будет запрос на английском языке.И $parametry будет параметрами.Например.Функция для возврата страницне мой родной язык, поэтому я им не пользуюсь ...

Кто-нибудь знает, что означает ошибка или почему она происходит?

1 Ответ

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

Array_shift изменял URL, поэтому он не работал.

Решение:

      public function zpracuj($parametry)
{
    $naparsovanaURL = $this->parsujURL($parametry[0]);

    $naparsovanaURL2 = $naparsovanaURL;

    if(empty($naparsovanaURL[0]))
        $this->presmeruj('clanek/uvod');
    // kontroler je 1. parametr URL
    $tridaKontroleru = $this->pomlckyDoVelbloudiNotace(array_shift($naparsovanaURL2)) . 'Kontroler';

    if (file_exists('kontrolery/' . $tridaKontroleru . '.php')){
         $this->kontroler = new $tridaKontroleru;
        $naparsovanaURL = $naparsovanaURL2;
    }

    elseif (SpravceStranek::dotazNaStranku($naparsovanaURL)>0) {
        $this->kontroler = new StrankyKontroler();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...