PHP OOP使用mysql从Database获取数组

时间:2015-01-26 19:50:14

标签: php mysql arrays oop

大家好我有以下代码:

$this->db->setQuery("SELECT id,grad FROM login WHERE Email='$Email' AND Parola='$Parola' LIMIT 1");
//setQuery Is setting the Query 
if($this->db->NumRows() > 0) {
//Checking if Number of Rows is greater than 0 

    if(session_id() == ''){
         session_start();
    }

    $this->Email = $Email;

    while($row = mysql_fetch_array($this->db->GetResource())){
        //Fetching from the database the "Id" And "Grad"
        $this->Id = $row[0];
        $this->Grad = $row[1];
    }
    echo $this->Id . "<br />";
    echo $this->Grad . "<br / >";
}

虽然按照我的计划工作,但我对代码不满意,我想从“db”中获取“Id”和“Grad”的信息。

$this->Id = $this->db->getInfo();
$this->Grad = $this->db->getInfo();

好吧,我在试图回应“Id”和“Grad”时遇到困难我得到了他的通知

  

注意:数组转换为字符串   第39行阵列上的C:\ xampp \ htdocs \ poo \ classes \ MVC \ userlogin.php

getInfo()的代码:

//$this->Resource is the mysql_query of the setQuery
$this->Rows = array();

if ($this->Resource) {

    while ($row = mysql_fetch_array($this->Resource)) {

        $this->Rows[] = $row;

    }

}
return $this->Rows;

我想提一下我是PHP和OOP的初学者。 使用的所有函数的代码http://tny.cz/4c5596fc

2 个答案:

答案 0 :(得分:0)

你的getInfo()函数返回数组,所以试着像

一样打印它
echo '<pre>';
print_r($this->id);
echo '</pre>';

答案 1 :(得分:0)

所以看起来getInfo()会获得第1行的第1个值,然后第二次调用时获取第1行的第2个值。如果它第三次被召唤怎么办?

您可以做的一件事,因为您只获取1行,只是在没有while循环的情况下返回getInfo()中的mysql_fetch_assoc($ this-&gt; Resource)。这只会给你第一行作为一个关联数组,你可以这样做:

$row = $this->db->getInfo();
$this->Id = $row['id'];
$this->Grad = $row['grad'];

我还应该在这里提一下,如果用户提供$ Email或$ Parola,则不推荐使用mysql_函数,并且代码容易受到mysql注入攻击。查看PDO和准备好的语句以防止这种情况发生。 如果你真的喜欢你的格式,你可以在你的getInfo()中这样做:

if (!$this->Row) {
    if ($this->Resource) {
        $this->Row = mysql_fetch_array($this->Resource);
    }
}
return array_shift($this->Row);