嗨,我有以下代码:

$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”时我陷入了困境,我得到了他的通知


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


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

最佳答案

因此,看起来getInfo()将获得第一行的第一个值,然后在第二次调用时获得第一行的第二个值。如果是第三次呢?

因为您只获取1行,所以您可以做的一件事就是只在getInfo()中返回mysql_fetch_assoc($ this-> Resource)而不使用while循环。这只会为您提供第一行作为关联数组,您可以执行以下操作:

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

10-01 10:04