Es no datubāzes izvelk skaitļus pēc šī koda
$monit_res = mysql_query("SELECT * FROM `tabula` WHERE admin >'0' ", $MySQLConn);
while ($monit_admins = mysql_fetch_assoc($monit_res))
{
echo''. $monit_admins['id'] . ' ';
}
viņš man izvelk skaitļus : 357785132
Bet man tiem skaitļiem vajadzīga atstarpe pēc katra izviltā skaitļ, bet tā lai es varētu tos lietot pie WHERE
$monit_res1 = mysql_query("SELECT * FROM `tabula` WHERE account ='Te tie skaitļi kurus izvelk' ", $MySQLConn);
ArisC miniblogs
- 0
ArisC 29.10.2015. 05:30
- 0
Kristiāns S 29.10.2015. 05:56 #
Ikdienišķais atgādinājums nelietot mysql_query
"WHERE account =" vietā var izmantot "WHERE account IN (id, id, id)"SELECT * FROM `tabula` WHERE account IN (3,5,7,7,8,5,1,3,2)
uztaisi arrayu ārpus while loopa un pašā loopā saliec tur tos id kurus tev vajag
$arr = [];
while ($monit_admins = mysql_fetch_assoc($monit_res))
{
$id = $monit_admins['id'];
array_push($arr, $id);
echo''. $id . ' ';
//....
}//$arr => [3, 5, 7, 7, 8, 5, 1, 3, 2]
vari viņus salikt kopār ar izmantojot implode
$prep = implode(',', $arr);
//$prep => "3,5,7,7,8,5,1,3,2"Vienīgi pēc tava iedotā "357785132" nevar saprast kur ir katra skaitļa robeža, savādāk kaut kā neloģiski, ka ir divi lietotāji ar id 3 un 7.
Laikam biji domājis 35, 77, 85, 132
- 0
Ja es pareizi saprotu, ko tu mēģini izdarīt, tad tur visīsāk un efektīvāk būtu vispār neiesaistīt PHP.
Tos datus no otrās tabulas var atlasīt vienā DB pieprasījumā vai nu ar subkveriju:
SELECT * FROM `tabula2` WHERE `account` IN(SELECT `id` FROM `tabula1` WHERE `admin` > 0)
Vai arī JOINu:
SELECT `tabula2`.* FROM `tabula2` INNER JOIN `tabula` ON `tabula`.`id` = `tabula2`.`account` AND `tabula`.`admin` > 0
Lietot JOINus būtu ieteicamāk, jo tad tiek pilnvērtīgi izmantoti indeksi, ja tādi ir izveidoti. Savukārt IN() ar daudziem parametriem indeksus nemāk lietot un pie lielāka datu daudzuma paliks lēns.
Bet rezultātu ziņā abi konkrētie pieprasījumi atgriezīs vienu un to pašu.
Ielogojies vai izveido profilu, lai komentētu!