大家好我有以下代码:
$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
答案 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);