gpt4 book ai didi

PHP OOP 使用 mysql 从数据库中获取数组

转载 作者:行者123 更新时间:2023-11-29 23:09:05 26 4
gpt4 key购买 nike

大家好,我有以下代码:

$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”时,我被卡住了,我收到了他的通知

Notice: Array to string conversion in C:\xampp\htdocs\poo\classes\MVC\userlogin.php on line 39 Array

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'];

我还应该在这里提到,mysql_ 函数已被弃用,并且如果用户提供 $Email 或 $Parola,代码很容易受到 mysql 注入(inject)攻击。查看 PDO 和准备好的语句来防止这种情况发生。如果您确实更喜欢现有的格式,您可以在 getInfo() 中这样做:

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

关于PHP OOP 使用 mysql 从数据库中获取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28157633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com