我已经设置了一个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类构造函数保持结果,它只返回一个引用值,这意味着我没有正确处理行。
我有一种感觉,我忽略了一些愚蠢的东西,所以任何帮助都会非常感激。谢谢!
答案 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。