$结果只有一行然后转换为会话

时间:2016-02-06 12:25:36

标签: php mysql arrays mysqli

我正在尝试从表'account'查询一行。我很讨厌MYSQLI所以我需要一些建议。我怎么能这样做?

$link = mysqli_connect("localhost","root","","database") or die("Error " . mysqli_error($link));

$query = "SELECT * FROM account WHERE username='".$user."' AND password='".$passcode."' LIMIT 1";
$result = $link->query($query) or die("Error " . mysqli_error($link));
$numrow = $result->num_rows;
$res = $result->fetch_assoc();

在查询之后我想将数据复制到会话中,我这样做:

    session_start();  
    $tableau = array($res['cod_acc'],$res['username'],$res['password']); 
    $_SESSION['tableau'] = $tableau;

在这些之后,我如何打印数据?

    $tableau = $_SESSION['tableau']; 
    echo "$tableau['username']";

2 个答案:

答案 0 :(得分:2)

来自您的问题:

  

如何打印数据?

首先,您需要在代码中添加error_reporting()

error_reporting(E_ALL);

您要在$_SESSION的数组中保存值:

$tableau = array($res['cod_acc'],$res['username'],$res['password']); 
$_SESSION['tableau'] = $tableau;

如果查看会话数组,则不是关联数组

所以你无法得到如下结果:

$tableau = $_SESSION['tableau']; 
echo $tableau['username'];

<强>解决方案:

您可以从会话数组中获取用户名:

echo $tableau[1]; // username on second index.

解决方案2:

如果你想要关联索引而不是你需要使用关联数组:

$tableau = array(
"cod_acc"=>$res['cod_acc'],
"username"=>$res['username']); 
$_SESSION['tableau'] = $tableau;

现在您可以根据需要使用。请注意,我正在从会话中删除密码字段,我认为它不需要。

旁注:

我不知道为什么要将程序性和面向对象的风格混合在一起。

答案 1 :(得分:0)

问题在于其他一些行代码,对不起该帖子。但是谢谢你们。