2013-07-22 166 views
-4

我有这个代码,我试图比较$当前$密码这是数组,甚至认为两者都有相同的值,并且不起作用。比较阵列不工作

$current_password = mysqli_query($db_connection,"SELECT password FROM 
            user WHERE username = 'sanket' "); 
$row = mysqli_fetch_array($current_password); 
foreach($row as $pass) 
{ 
    $password = $pass[0]; 
} 
$current = $_POST['old_password']; 
if ($current == $password) { 

    if ($_POST['new_password'] == $_POST['confirm_password']) { 

    mysqli_query($db_connection,"UPDATE user SET password 
    = ".$_POST['confirm_password']." WHERE username = 'sanket'") ; 

} 
+0

为什么密码(其中之一)是数组?另外,http://bobby-tables.com/你已经在使用mysqli了,使用位置参数。 – Amadan

+0

当你遇到这样的问题时,只需var_dump这些变量并检查它们是否相等,然后就可以很容易地找到问题了。 – TroyCheng

+0

以及我做var转储和$当前和$密码匹配的数组,但它没有去更远,然后比较两个变量 – user2605953

回答

2
$row = mysqli_fetch_array($current_password); 
foreach($row as $pass) 
{ 
    $password = $pass[0]; 
} 

$row已经是一个一维数组的字符串。当您对$row进行foreach时,$pass将是一个字符串。因此,当您将$pass[0]指定为$password时,将$pass中字符串的第一个字符指定为$password。所以只写:

$row = mysqli_fetch_array($current_password); 
$password = $row[0]; 

这里必要的警告:使用适当的用mysqli_preparemysqli_real_escape_string用户输入逃跑!

+0

仍然没有工作基本上$ _POST ['old_password']是单维数组和$行['密码']是两维或多维数组,并且除了这两个变量之间的比较外,其他所有函数都可以工作 – user2605953

+0

我发誓,'$ row'是一维的。 (这是mysqli_fetch_array返回的内容) – bwoebi