PHP 未捕获的 PDOException: SQLSTATE[HY000]: 一般错误: 2031.



我正在尝试创建自己的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);

但是当我输入本地主机/onas(关于我们的页面(应该是((时,它只是显示错误

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

这指的是这些台词...更具体地与执行...

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

$dotaz将以英语提出要求。$parametry是参数。 例如。返回页面的函数

public function vratStranku($url) // Translation: public function returnPage($url)
{
return Db::dotazJeden('SELECT `stranka_id`, `titulek`, `obsah`, `url`, `popisek`, `klicova_slova` FROM `stranky` WHERE `url` = ? ', array($url));
// Translation: return Db::requestOne('SELECT `page_id`, `title`, `content`, `url`, `description`, `key_words` FROM `pages` WHERE `url` = ? ', array($url))
}

所以$dotaz是

'SELECT `page_id`, `title`, `content`, `url`, `description`, `key_words` 
FROM `pages` WHERE `url` = ? '`

$parametry是array($url)

很抱歉没有我的英语程序,但它不是我的母语,所以我不使用它......

有谁知道错误意味着什么或为什么会发生?

Array_shift正在更改网址,因此它不起作用。

溶液:

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

最新更新