ArisC miniblogs

  • ArisC
    0

    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
      0

      @mad vabūt tu zini....

    • Kristiāns S
      0

      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

      • mad
        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.

      • ArisC
        0

        Es tos skaitļus dabūju bez atstarpēm, bet kā lai es viņus atdalu un varu lietot pie WHERE jau atdalītus ?

    Atpakaļ Uz augšu