Php 非法字符串偏移量';slug';PDO

Php 非法字符串偏移量';slug';PDO,php,pdo,foreach,Php,Pdo,Foreach,我正在尝试从数据库中提取页面,并使其成为实际的页面url: 但由于某种原因,它不起作用。我一直收到这个 非法字符串偏移量“slug” 错误。如何解决此问题?$page实际上是一个字符串,因此出现错误fetch返回一行,因此: $menu = $stmt->fetch(PDO::FETCH_ASSOC); foreach($menu as $page) { ... 实际上,将每列作为字符串循环 相反: $stmt->execute(); while ($page = $stmt-

我正在尝试从数据库中提取页面,并使其成为实际的页面url:

但由于某种原因,它不起作用。我一直收到这个

非法字符串偏移量“slug”


错误。如何解决此问题?

$page
实际上是一个字符串,因此出现错误
fetch
返回一行,因此:

$menu = $stmt->fetch(PDO::FETCH_ASSOC);
foreach($menu as $page) { ...
实际上,将每列作为字符串循环

相反:

$stmt->execute();

while ($page = $stmt->fetch(PDO::FETCH_ASSOC)) { ...

更改
$menu=$stmt->fetch(PDO::fetch\u ASSOC)
$menu=$stmt->fetchAll(PDO::FETCH_ASSOC)
删除每一行的
foreach
并使用
$菜单['slug']
而不是
$页面['slug']
当您只需要一行时,不应选择所有行

$stmt = $auth_user->runQuery("SELECT slug FROM pages WHERE slug = ?");
$stmt->execute([basename($_SERVER['REQUEST_URI'])]);
$slug = $stmt->fetchColumn();

if($slug) {
    require_once "inc/page/$slug.php";
}

你应该规范你的数据库。逗号分隔的值很难使用,有什么建议如何做得更好?
$stmt = $auth_user->runQuery("SELECT slug FROM pages WHERE slug = ?");
$stmt->execute([basename($_SERVER['REQUEST_URI'])]);
$slug = $stmt->fetchColumn();

if($slug) {
    require_once "inc/page/$slug.php";
}