jak teraz ułożyć zapytanie do bazy aby np. po wpisaniu numeru pokazało się imię i nazwisko, lub po wpisaniu nazwiska pokazał się numer. Chodzi mi o to żeby sprawdzić tą zmienną $dane dla wszystkich pól w jednym zapytaniu. Da radę tak?
mysql_query(‘SELECT * FROM tabela WHERE id = ’ . $dane . ’ OR imie = "’ . $dane . ‘" OR nazwisko = "’ . $dane . '" OR numer = '. $dane)
Oczywiście najlepiej to zabezpieczyć podejrzewam, że id i numer są typu integer tak więc intval() powinno “styknąć”, a dla string mysql_real_escape_string
[EDIT] Doszedłem do wniosku ze rzut na integer może mieć jedno wąskie gardło przykładowo intval(‘12sa’) da 12, co z kolei poza hasłem zwróci osobę o id = 12 i tych co mają numer 12, więc aby je wyeliminować można dać coś takiego
if(is_numeric($dane))
{
mysql_query('SELECT * FROM tabela WHERE id = ' . $dane . ' OR imie = "' . $dane . '" OR nazwisko = "' . $dane . '" OR numer = '. $dane)
}
else
{
mysql_query('SELECT * FROM tabela WHERE imie = "' . $dane . '" OR nazwisko = "' . $dane . '"')
}
to wiem, że źle bo próbowałem kombinować i wkleiłem przez przypadek ten kod po modyfikacjach.
php:
<?php
$db = mysql_connect('localhost', 'user', 'haslo');
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
mysql_select_db('indeksy');
$dane =$_POST['dane'];
$zapytanie="SELECT * FROM tabela WHERE imie = $dane OR nazwisko = $dane OR numer = $dane ";
$rez=mysql_query($zapytanie);
mysql_num_rows($rez);
{
$rez['numer'];
}
?>
formularz wyszukiwania:
tabela w bazie:
CREATE TABLE IF NOT EXISTS `dane` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`imie` varchar(100) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
`nazwisko` varchar(100) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
`indeks` varchar(100) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=ucs2 COLLATE=ucs2_polish_ci AUTO_INCREMENT=73 ;