首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在PHP中打印传递的数组

问无法在PHP中打印传递的数组
EN

Stack Overflow用户
提问于 2011-05-18 23:16:52
回答 2查看 234关注 0票数 0

我有3个文件:

DB.class.php -它处理所有的数据库。Site.class.php -包含一个返回数据库中最新条目的函数。index.php -尝试打印传递的数组。

我尝试将一个数组从Site.class.php传入index.php,它使用来自DB.class.php的函数将mysql结果放入一个关联数组中。

index.php:

代码语言:javascript
复制
<?php

// index.php

include 'classes/Site.class.php';
$site = new Site();

print_r($site->latestBookmarks());

?>

Site.class.php:

代码语言:javascript
复制
<?php 

// Site.class.php

require_once 'DB.class.php';

class Site {

    function latestBookmarks() {

        $result = mysql_query("SELECT url, title FROM site ORDER BY id DESC");

        $db = new DB();

        return $db->processRowSet($result);

    }

}

?>

DB.class.php:

代码语言:javascript
复制
<?php 

// DB.class.php

class DB {

    protected $db_name = "project";
    protected $db_user = "root";
    protected $db_pass = "root";
    protected $db_host = "localhost";

    // Open up a connection to the database.

    public function connect() {

        $connection = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
        mysql_select_db($this->db_name);

        return true;

    }

    // Takes a MySQL row and returns an associative array where the keys in the array are the column names in the row set.

    public function processRowSet($rowSet, $singleRow=false) {

        $resultArray = array();

        while ($row = mysql_fetch_assoc($rowSet)) {
            array_push($resultArray, $row);
        }

        if ($singleRow === true)
            return $resultArray[0];

        return $resultArray;

    }

    // Select rows from the database.

    public function select($table, $where) {

        $sql = "SELECT * FROM $table WHERE $where";

        $result = mysql_query($sql);

        if (mysql_num_rows($result) == 1)
            return $this->processRowSet($result, true);

        return $this->processRowSet($result);

    }

    // Update a current row in the database.

    public function update($data, $table, $where) {

        foreach ($data as $column => $value) {
            $sql = "UPDATE $table SET $column = $value WHERE $where";
            mysql_query($sql) or die(mysql_error());
        }

        return true;

    }

    // Insert a new row into the database.

    public function insert($data, $table) {

        $columns = "";
        $values = "";

        foreach ($data as $column => $value) {
            $columns .= ($columns == "") ? "" : ", ";
            $columns .= $column;
            $values .= ($values == "") ? "" : ", ";
            $values .= $value;
        }

        $sql = "INSERT INTO $table ($columns) VALUES ($values)";

        mysql_query($sql) or die(mysql_error());

        return mysql_insert_id();

    }

}

?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-18 23:21:29

我注意到几个问题:

  • 在连接到数据库之前,在function latestBookmarks中运行查询;在function
  • 中,在function connect中连接到数据库,但结果会立即被丢弃,一旦函数完成,$connection就会丢失。
票数 4
EN

Stack Overflow用户

发布于 2011-05-18 23:23:21

当您运行以下代码行时,您没有连接到数据库:

代码语言:javascript
复制
 $result = mysql_query("SELECT url, title FROM site ORDER BY id DESC");

您需要调整代码以将查询字符串发送到DB实例进行处理。您可以向DB添加一个方法来执行mysql_query,并像这样从Site::latestBookmarks()传递查询:

代码语言:javascript
复制
 $db = new DB();
 $db->executeQuery("SELECT url, title FROM site ORDER BY id DESC");
 return $db->processRowSet();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6047067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档