2016-03-06 35 views
0

晚上好與MYSQL記錄匹配的表單變量,不能在PHP

我有我的登錄代碼有問題。我創建了一個表單,將變量從我的php代碼中取出(該部分工作正常)。然後我創建了PHP登錄代碼,我試圖通過輸入的登錄名匹配密碼。但即使當我輸入登錄名和正確的密碼,我仍然得到else。下面是代碼:

<?php 

$login=$_POST["loginas"]; 
$password=$_POST["passwordas"]; 

//connect to mysql 
$rysys = new mysqli('localhost', 'root','','testas'); 
//are we connected? 
if($rysys->connect_error){ 
    die("Neprisijungeme, nes: " . $rysys->connect_error); 
} 

//the query 
$sql = "SELECT password FROM vartotojai WHERE login='$login'"; 
$rezultatas=$rysys->query($sql); 
if($password == $rezultatas){ 
    echo "Prisijungeme \n"; 
} 
    else{ 
     echo "Neteisingas slaptazodis arba prisijungimo vardas\n"; 
    } 


?> 

說明: $login我把它從我的形式 $password我把它從我的形式 我有數據庫'testas',有'vartotojai'表。並且vartotojai表有'password''login' 我輸入的登錄名和密碼與數據庫中的100%類似。

+0

如果您使用的mysqli使用準備好的語句,讓您的查詢中的變量跳動的整體思路:) http://php.net/manual/en/mysqli.prepare.php – odedta

+0

嘗試'的var_dump(rezultatas )' – odedta

+0

我只是一個初學者,你能解釋我更多我做錯了什麼? :) –

回答

1

我找到了一個解決方案。我添加了一行:

$rez=$rezultatas->fetch_assoc();該行幫助我從查詢結果創建assoc數組。

if($password == $rez["password"]這裏我只是用assoc數組來檢查它是否好。

@代表,你說得對。自行找到問題的答案更有用。但是,從比我更好的人那裏獲得建議也是學習的好方法。

2

查詢功能將不會返回密碼字段爲字符串,請閱讀文檔:

http://php.net/manual/en/mysqli.query.php

你的檢查將因此總是是假的。正確使用該功能如下:

if($password == $rezultatas["password"]){ 
+0

致命錯誤:無法使用mysqli_result類型的對象作爲數組 –

+0

Tomas,請在代碼之前閱讀...請使用$ variable-> property的對象; – odedta