基本上,我正在尝试使用找到的类从数据库中获取用户数据,它正在解析数组中的所有数据,如下所示:
public function Get($field = NULL) {
if ($field == NULL)
{
$data = array();
while ($row = mysql_fetch_array($this->last_query))
{
$data[] = $row;
}
}
else
{
$row = mysql_fetch_array($this->last_query);
$data = $row[$field];
}
return $data;
}
这是我用来调用此函数的PHP代码
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($_SESSION['csrfToken'] == $_POST['csrfToken']) {
$email = $_POST['email'];
$password = $Security->Salt($Security->secParam($_POST['password']));
$DB->Query("SELECT * FROM `table` WHERE `email` = '$email' AND `password` = '$password'");
if($DB->num_rows() > 0) {
$results = $DB->Get();
} else {
echo "Account not found";
}
}
}
如果我在$ results上执行var_dump,则会显示以下内容
array(1) {
[0]=> array(8) {
[0]=> string(1) "1" ["id"]=> string(1) "1"
[1]=> string(35) "email@email.com" ["email"]=> string(35) "email@email.com"
[2]=> string(32) "4f14dfef1efe0de64e2b176eac6051cd" ["password"]=> string(32) "4f14dfef1efe0de64e2b176eac6051cd"
[3]=> string(1) "1" ["status"]=> string(1) "1"
}
}
我该如何访问这些数据?我试过通过以下方式调用它
$email = $results['email'];
echo $email;
但它没有显示任何内容?
答案 0 :(得分:2)
即使在这个实例中只有一个结果(我猜?),该数组支持多个。
所以找到第一个结果,然后从中获取电子邮件:
echo $results[0]['email'];
// ^^^^^^^^^^^
// first result
答案 1 :(得分:0)
您需要跟踪数组的工作方式。首先你有数组(1)然后进入数组另一个变量,如“email”或1。
array(1) { <---- THIS IS ARRAY OCCURED FOR FIRST "0" ARRAY.
关于什么
this
\/
echo $results[0]["email"]; ?
答案 2 :(得分:-1)
if($_SERVER['REQUEST_METHOD'] == 'POST' && $_SESSION['csrfToken'] == $_POST['csrfToken']) {
$password = $Security->Salt($Security->secParam($_POST['password']));
$password = $DB->quoteStr($password);
$email = $DB->quoteStr($_POST['email']);
$DB->Query("SELECT * FROM `table` WHERE `email` = $email AND `password` = $password");
return $DB->GetRow();
}
public function GetRow() {
return mysql_fetch_array($this->last_query);
}
public function quoteStr($str) {
return "'".mysql_real_escape_string($str)."'";
}
答案 3 :(得分:-1)
Marin Sagovac问题就是答案。
为了将其分解一点,你的var_dump输出显示$ results是一个嵌套数组。输出的第一部分:
array(1) {
[0]=>
表明$ results包含一个包含1个元素的数组,索引为0,因为这是PHP开始索引的地方。这是马林回应的$ results [0]部分。
$ results数组的元素0由一个包含8个元素的数组组成。
[0]=>array(8) {
[0]=> string(1) "1" ["id"]=> string(1) "1"
[1]=> string(35) "email@email.com" ["email"]=> string(35) "email@email.com"
即使只有4个实际结果,索引1-4,每个结果都存在两次,因此它们可以通过索引或其键访问。可以通过唯一键访问的数组(而不是索引)称为关联数组。
因此,在这种情况下,要么返回相同的值:
echo $results[0]["email"];
echo $results[0][1];
print_r函数也可以,而不是var_dump。