2013-02-04 28 views
-2

我写的PHP不能分配从FETCH_ASSOC返回值()

$query = "SELECT privilege , no, userName FROM $tableName WHERE userName = 

'$inputAccount' and password = '$inputPassword'"; 

$result = $mysqli->query($query); 

if($result){ 
     while ($row = $result->fetch_assoc()) { 
     printf ("%s %s %s\n", $row["privilege"], $row["no"], $row["userName"]); 
    } 
} 

结果是user 2 test

session_start(); 
$_SESSION["privilege"]=$row["privilege"]; 
$_SESSION["no"]=$row["no"]; 
$_SESSION["userName"]=$row["userName"] 

echo $_SESSION["privilege"] ; 
echo $_SESSION["no"]; 
echo $_SESSION["userName"]; 

但结果来无事,我必须解决它很长一段时间,找不到原因?

Thx提前。

+0

剂量的printf打印任何东西吗? – 2013-02-04 05:08:37

+1

您的应用程序很可能面向SQL注入。使用准备的查询。 – Brad

+0

这些代码是在不同的文件? – 2013-02-04 05:18:39

回答

2

使用下面的代码,问题是,你是不是存储变量的SQL输出和访问while循环之外的结果。

session_start(); 
$query = "SELECT privilege , no, userName FROM $tableName WHERE userName = 

'$inputAccount' and password = '$inputPassword'"; 

$result = $mysqli->query($query); 

if($result){ 
     while ($row = $result->fetch_assoc()) { 
     //printf ("%s %s %s\n", $row["privilege"], $row["no"], $row["userName"]); 
     $pr = $row["privilege"]; 
     $no = $row["no"]; 
     $name = $row["userName"]; 
    } 
} 

$_SESSION["privilege"]=$pr; 
$_SESSION["no"]=$no; 
$_SESSION["userName"]=$name 

echo $_SESSION["privilege"] ; 
echo $_SESSION["no"]; 
echo $_SESSION["userName"]; 
+0

不需要使用一段时间,因为它只有一行 – 2013-02-04 06:18:44

+1

THX,我忘了PHP varible范围的规则。 –

+1

Thx非常感谢您的帮助! –

1

假设你以后您while循环分配值$_SESSION$rowfalse在那个阶段。

+0

最后的值将在那里我认为... – 2013-02-04 05:13:09

+0

@Akam不,他们不会。该循环还会如何退出? – Phil

+0

正确,它以虚假结尾:) – 2013-02-04 06:17:50