スラッグがダッシュで区切られているページからコンテンツを取得する際に問題があります。たとえば、そこに行くとwww.example.com/home
正常に動作しますが、たとえばに行くと、www.example.com/about-us
エラーTrying to get property of non-object
がこの行に関するものであるとエラーが発生します。
<h1><?php echo $page->Title; ?></h1>
<?php echo $page->Content; ?>
次のようなデータベースからスラッグを取得する関数があります。
function getSlug($name = null) {
global $db;
if ($name) {
$query = $db->prepare('SELECT * FROM pages WHERE `Title` = ? LIMIT 1');
$query->execute(array($name));
return $query->fetchObject();
}
}
このようなスラッグを作成する関数もあります。
function createSlug($string){
$string = preg_replace( '/[«»""!?,.!@£$%^&*{};:()]+/', '', $string );
$string = strtolower($string);
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
return $slug;
}
私のhtaccessにはルールがありRewriteRule ^([a-zA-Z0-9-/]+)$ index.php?name=$1 [L]
ます。
コンテンツを取得するには、次のコードを使用しました。
<?php
include 'header.php';
$slug = create_slug($_GET['name']);
$page = getSlug($slug);
?>
<div class="container">
<h1><?php echo $page->Title; ?></h1>
<?php echo $page->Content; ?>
<?php include 'footer.php'; ?>
何が問題なのか、まったくわかりません。どんな助けでも大歓迎です。
前もって感謝します。敬具