Wątek przeniesiony 2015-03-27 10:30 z PHP przez dzek69.

PDO - kontrola typu danych

0

Witam.

Mam pytanie do osób zaznajomionych z tematem-

 
$login = 234;
	
	
	try {
		$query = $pdo->prepare('INSERT INTO `users`(`U_ID`, `LOGIN`, `HASLO`, `IMIE`, `NAZWISKO`, `WIEK`) VALUES (\'\',\'user\',:log,\'Krzysztof\',\'Kowalskii\',22')');
		$query->bindValue(':log',$login, PDO::PARAM_STR);
		$ilosc = $query->execute();
		if($ilosc > 0)
        {
            echo 'Dodano: '.$ilosc.' rekordow';
        }
        else
        {
            echo 'Wystąpił błąd podczas dodawania rekordów!';
        }
	}
	catch (PDOexception $e) {
		echo 'Błąd w dodawaniu danych do bazy<br />'.$e->getMessage();
	}

Zastanawiam się czemu, pomimo określenia typu parametru :log (String), do bazy zostaje wstawiony rekord z loginem w postaci liczby. I chciałbym się tylko upewnić, czy jest jakiś błąd i normalnie powinno go wywalić czy po prostu następuje konwersja INT-a do Stringa przed dodaniem rekordu do bazy?

0

Zastanawiam się czemu, pomimo określenia typu parametru :log (String), do bazy zostaje wstawiony rekord z loginem w postaci liczby.

No bo to jest liczba?
Co ty byś chciał, żeby Ci zapisało? "Dwieście trzydzieści cztery" czy co?

To służy tylko do budowania zapytania SQL, czy wstawić tam INSERT INTO tabela (id) VALUES (234) czy może INSERT INTO tabela (id) VALUES ('234')

0

Tak, natomiast w funkcji bindValue następuje wymuszenie Stringa, chociaż $login liczbą nie jest, gdyż:
$login = 234; a nie: $login = '234'; Pozdrawiam

0

W bazie masz pole zdefiniowane jako INT.

1 użytkowników online, w tym zalogowanych: 0, gości: 1