Kezdőoldal » Számítástechnika » Weblapkészítés » Miért kapok mindig 1-et a...

Miért kapok mindig 1-et a num_rows-ra?

Figyelt kérdés

Bejelentkezést csinálom most éppen, és a num_rowsra mindig 1-et kapok.

Login:


$login = new Login($username, $password);


class Login {

protected $username;

protected $password;

protected $connection; //Database object


public function __construct($username,$password){

//set data

$this->setData($username,$password);


//connect to db

$this->connectToDB();


//get data

$this->getData();

}


protected function setData($username,$password){

$this->username = $username;

$this->password = $password;

}


protected function connectToDB(){

$this->connection = new Database();

}


protected function getData(){

$select = $this->connection->select('SELECT * FROM users WHERE felhasznalonev = ? && jelszo = ?', array($this->username,$this->password), array('%d','%d'));


if($select != 0){

return TRUE;

}else {

return FALSE;

}

}

}


A lényeg az adatbázis osztályból: (select)


class Database extends config {

public function select($query, $data, $format)

{

// Connect to the database

$db = $this->connect();


//Prepare our query for binding

$stmt = $db->prepare($query);


//Normalize format

$format = implode('', $format);

$format = str_replace('%', '', $format);


// Prepend $format onto $values

array_unshift($data, $format);


//Dynamically bind values

call_user_func_array(array($stmt, 'bind_param'), $this->ref_values($data));


//Execute the query

$stmt->execute();


//Fetch results

$stmt->get_result();


$result = $stmt->num_rows;


return $result;

}

private function ref_values($array)

{

$refs = array();


foreach ($array as $key => $value) {

$refs[$key] = &$array[$key];

}


return $refs;

}

}



2015. okt. 28. 18:16
1 2
 1/12 anonim ***** válasza:
$result = $stmt->fetchColumn();
2015. okt. 28. 18:21
Hasznos számodra ez a válasz?
 2/12 A kérdező kommentje:
H.Tibor87 köszi, de nem sokat segített, egyébként nem PDO-t használok, ettől függetlenül a fetch field sem lenne jó.
2015. okt. 28. 18:25
 3/12 A kérdező kommentje:
Csak vissza szeretnék térni azzal, hogy hány sort kaptam vissza, és ebből lekövetkeztetni, hogy jó-e a felhasználónév-jelszó kombináció. Erre elég lenne a num_rows de az mindig 1-el jön vissza, ha jó, ha nem.
2015. okt. 28. 18:26
 4/12 anonim ***** válasza:

Ha viszont nem PDO kéne tudni milyen rendszer...

Mert így pár száz hasonlóból barkochbáztunk.

2015. okt. 28. 18:27
Hasznos számodra ez a válasz?
 5/12 A kérdező kommentje:
mysqli
2015. okt. 28. 18:30
 6/12 A kérdező kommentje:

Meg van a ludas:

$select = $this->connection->select('SELECT * FROM users WHERE felhasznalonev = ? && jelszo = ?', array($this->username,$this->password), array('%d','%d'));

HELYETT:

$select = $this->connection->select('SELECT * FROM users WHERE felhasznalonev = ? && jelszo = ?', array($this->username,$this->password), array('%ss'));

2015. okt. 28. 18:40
 7/12 anonim ***** válasza:

select -ben a 3 elemnek nem sok értelme marad.

elöször egyesíted az elemeket tehát lesz egy '%d%d' string, majd kiveszed belőle a % -jelet és lesz 'dd' string, majd beadod a $data -nak 3. elemnek.


Mindegy, ha jól értem, amúgy is elvész, mivel 2 elem van amit bind -el behelyettesítel.

majd a funkcióban vissza adod return -ba és végre hajtod.

A get_result() -nak ekkor / itt nem sok értelme van szerintem lehet ez a hiba forrása.

De javaslom, írasd ki mi jött vissza.

2015. okt. 28. 18:43
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
az ss -nek azon kívül hogy kissé rasszista mi szerepe van? :-)
2015. okt. 28. 18:44
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:

:D prepared statementnél a bind_param-nál át kell adni a paraméterek számával megegyező karaktereket, ha betű akkor s, ha szám akkor d, ha jól tudom.

[link]

2015. okt. 28. 18:51
 10/12 anonim ***** válasza:
így már oké, csak fura volt, hogy a végére maradt, meg meg volt kavarva a % -al is. :-)
2015. okt. 28. 18:59
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!