Just nu i M3-nätverket
Gå till innehåll

mySqli - Äventyret fortsätter - mySqli_query igen


Niss3

Rekommendera Poster

Hej igen!

 

Denna gången försöker jag använda mySqli_query för att hämta information och tänker så småningom jämföra om $result == $_POST['username'] && $_POST['password'], eller något i den stilen.

 

Som sagt, jag leker bara med kod för att lära mig. Här är koden jag använder just nu:

$usernamei = mysqli_real_escape_string($opendb, $_POST["username"]);
$passwordi = mysqli_real_escape_string($opendb, $_POST["password"]);

$result = mysqli_query($opendb, "SELECT * FROM members WHERE memberscol='$usernamei'")
or die(mysqli_error($opendb));

var_dump($usernamei);
echo "<br /> <br />";
var_dump($result);
echo "<br /> <br />";
var_dump($_POST);

echo "<br /> <br />";
echo "Welcome: ";
echo $_POST["username"] ."<br />The password you entered was: ". $_POST["password"]; 

Jag har med var_dump bara för att se vad jag får för värden i de olika variablerna.

 

Resultatet från denna kompilering såg ut såhär:

string(4) "test" 

object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(3) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) } 

array(3) { ["username"]=> string(4) "test" ["password"]=> string(4) "test" ["submit"]=> string(5) "Login" } 

Welcome: test
The password you entered was: test

Min fråga är, hur ska jag använda mySqli_query för att få ut något vettigt från den? I databasen members har jag 3 kollumer. 1 id, 2 namn och 3 lösenord. De heter "idmembers", "memberscol" och "password".

 

Jag vill använda mySqli för att hämta informationen i members tabellen och sedan kolla om det finns någon användare med det användarnamnet som tidigare matades in i $_POST['username'].

 

Problemet är att jag inte vet hur mySqli_query fungerar eller varför jag får "object(mysqli_result)#2 (5) { ["current_field.." osv,

 

Någon hjälte som kan förklara och hjälpa mig komma vidare? Och kanske ge mig tips på vart jag kan läsa om hur olika mySqli funktioner fungerar? Guiden jag i nuläget följer (på webdesignskolan) är väldigt gammal..

 

Tackar så väldigt!

Med vänliga hälsningar,

Simon Nilsson

 

 

 

---------------edit-------------------

 

Egen fundering. Kan det vara att jag missat använda mysqli_fetch_array?

 

-------------edit2--------------------

$raw = mysqli_fetch_array( $result );

/*
var_dump($raw);
echo "<br /> <br />";
var_dump($result);
echo "<br /> <br />";
var_dump($_POST);
*/

echo $raw['memberscol'];

Ändrade lite i koden och fick $raw att skriva ut "test". Success!! haha.

Länk till kommentar
Dela på andra webbplatser

Problemet jag har nu är att $result = mysqli_query($opendb, "SELECT * FROM members WHERE memberscol='$usernamei'")

or die(mysqli_error($opendb)); hämtar ALL information. Även lösenord.
 
Jag vill att den bara hämtar användarnamnet. Dvs. Att $result bara hämtar 1 array, memberscol, och bara lägger ett värde där om det är samma som $usernamei.
 
Någon del av mysqli_query verkar fungera eftersom jag måste logga in med test för att få något i $result alls. Försöker jag med något annat får jag tillbaka "NULL".
 
Jag kanske inte behöver oroa mig för att jag hämtar allt?
Länk till kommentar
Dela på andra webbplatser

istället för att selecta allt (stjärna) anger du de kolumner du vill ha ut. Det är också best practice, att endast ange fält som man behöver.

 

SELECT field1, field2 FROM members WHERE memberscol='$usernamei'"

 

Fast frågan är vad du egentligen vill göra.

Vill du endast kontrollera uppgifterna behöver du kanske inte hämta ut något?

 

Sedan bör du inte lagra lösenord i klartext. 

Länk till kommentar
Dela på andra webbplatser

istället för att selecta allt (stjärna) anger du de kolumner du vill ha ut. Det är också best practice, att endast ange fält som man behöver.

 

SELECT field1, field2 FROM members WHERE memberscol='$usernamei'"

 

Fast frågan är vad du egentligen vill göra.

Vill du endast kontrollera uppgifterna behöver du kanske inte hämta ut något?

 

Sedan bör du inte lagra lösenord i klartext. 

 

Tack Jonas!

 

Jag ska testa vidare utan att använda *.

 

I framtiden hoppas jag också lära mig hur jag kan "kryptera" lösenorden, men just nu har jag inte den kunskapen. Så jag leker vidare med vad jag kan för att i sin tur kunna lära mig mer :)

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...