PHP MySQL查询无法使用我的数据库类

时间:2014-07-07 00:13:06

标签: php mysql

我已经设置了一个Database类,一个User类和一个UserTools类来与MySQL数据库进行交互。似乎我的UPDATE,DELETE和INSERT命令正在查找,但我无法弄清楚我的SELECT语句会发生什么。我只是使用mysql,直到我得到所有工作,因为我喜欢,然后我切换到mysqli或PDO。但无论如何,这就是我所看到的......

DB class ....

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

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

    $resultArray = array();

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

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


    return $resultArray;
}

UserTools类

public function getUser($id) {
    $db = new DB();
    $result = $db->select('users', 'id = $id');

    return new User($result);
}

我处理行或其他内容的方式似乎存在问题。我已经按照UPDATE,DELETE,INSERT的类似设置进行了操作,它们似乎工作正常,但我不知道这里发生了什么。

如果我调用新UserTools()的实例,那么尝试运行getUser()函数,它不会按照它设置的方式返回任何内容。如果我通过User类构造函数保持结果,它只返回一个引用值,这意味着我没有正确处理行。

我有一种感觉,我忽略了一些愚蠢的东西,所以任何帮助都会非常感激。谢谢!

2 个答案:

答案 0 :(得分:0)

首先,

$result = $db->select('users', 'id = $id');

应该是

$result = $db->select('users', 'id = '.$id);

正如卡西米尔所说,public function processsRowSet

中有一个拼写错误

echo $sql; die;检查查询是否完整。

答案 1 :(得分:0)

在UserTools类中:'id = $id'不会在$ id中解析。而是"id = {$id}"或类似的,以便它可以解析$ id。