【问题标题】:Query Database by ID for page title and content按 ID 查询数据库以获取页面标题和内容
【发布时间】:2013-01-06 21:47:58
【问题描述】:

这个很简单,但是今天转了这么多圈,完全迷路了!

我正在尝试根据我在页面顶部设置的变量获取正确的页面标题和页面内容。即:

<?php 
$pageIDn = 2;
include($_SERVER['DOCUMENT_ROOT'] .'/includes/functions.php');
content($pageIDn); // the function that queries the DB
include($_SERVER['DOCUMENT_ROOT'] .'/includes/header.php'); ?>

在函数中,我有这个函数/查询:

function content($pageID){
    $query = mysql_query("SELECT * FROM pages WHERE id = 1");
    $title = $query['title'];
    $content = $query['content'];
}

然后在文件中的相关位置,我尝试回显变量,即:

<h2><?php echo $content; ?></h2>

我知道我在这里某个地方犯了一个非常愚蠢的错误......只是不确定在哪里。

【问题讨论】:

  • 页面有错误吗?
  • 两个错误:没有启用 error_reporting,也没有立即查看 mysql_query 的手动示例。 (另外,仍然使用 mysql_query 本身就是一个错误。但使用更麻烦的 api 完全是您的决定。)

标签: php mysql sql content-management-system


【解决方案1】:

您有三个错误:

  1. 您忘记在查询中输入您的$pageID

    $query = mysql_query("SELECT * FROM pages WHERE id = {$pageID}");
    
  2. ...获取结果:

    $row = mysql_fetch_assoc($query);
    $title = $row['title'];
    $content = $row['content'];
    
  3. ...并返回并捕获您的输出:

    return array($title, $content);
    
    list($title, $content) = content($pageIDn);
    

堆栈溢出:

$pageIDn = 2;
include($_SERVER['DOCUMENT_ROOT'] .'/includes/functions.php');
list($title, $content) = content($pageIDn); // the function that queries the DB
include($_SERVER['DOCUMENT_ROOT'] .'/includes/header.php'); ?>

function content($pageID){
    $query = mysql_query("SELECT * FROM pages WHERE id = {$pageID}");
    $row = mysql_fetch_assoc($query);
    $title = $row['title'];
    $content = $row['content'];
    return array($title, $content);
}

另外,Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

【讨论】:

  • 你也必须将 $content 变量设置为全局变量才能在函数外使用它。
  • 其实我没有,因为它在`content()`返回的数组中
  • 非常感谢 - 当明显的错误被指出时,一切都变得如此简单!非常感谢。
  • 关于贬值的mysql_*,我什至不知道!我基本上已经将本教程中的一个基本 CMS 散列在一起:melvinwalls.com/2011/01/…,但以完全不同的方式使用它。
【解决方案2】:

你的第一个错误是忘记了 MYSQL_*。使用 PDO 其次,你说要抢$pageIDn = 2,但你根本没有用。

function content($pageID){
$query = mysql_query("SELECT * FROM pages WHERE id = ".$pageIDn." ");
$row = mysql_fetch_array($query);
$title = $query['title'];
$content = $query['content'];
 } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2015-07-16
    • 1970-01-01
    相关资源
    最近更新 更多