嗨,我有以下代码:
$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);