Jump to content
  • 0

Wartość zwracana przez zapytanie


Go to solution Solved by Spanner,

Question

Cześć, robię zapytanie do bazy w ten sposób : 

$res = \IPS\DB::i()->select('field_16', 'cms_custom_database_7', array('field_16=?', $nr) );

Wynik takiego zapytania to ( robię var_dump($res) ) :

object(IPS\Db\Select)#172 (17) { ["query"]=> string(97) "SELECT field_16 FROM `orig_ipb_cms_custom_database_7` AS `cms_custom_database_7` WHERE field_16=?" ["binds"]=> array(1) { [0]=> string(16) "5320772031672620" } ["joinBinds":protected]=> array(0) { } ["db":protected]=> object(IPS\Db)#12 (19) { ["affected_rows"]=> int(-1) ["client_info"]=> string(79) "mysqlnd 5.0.11-dev - 20120503 - : 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $" ["client_version"]=> int(50011) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(52) ["host_info"]=> string(21) "46.29.23.9 via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(20) "5.5.37-0+wheezy1-log" ["server_version"]=> int(50537) ["stat"]=> string(159) "Uptime: 116578867 Threads: 26 Questions: 28255365355 Slow queries: 65044 Opens: 7380966 Flush tables: 1 Open tables: 512 Queries per second avg: 242.371" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(908108518) ["warning_count"]=> int(0) } ["stmt":protected]=> NULL ["multiDimensional":protected]=> int(0) ["useWriteServer":protected]=> int(0) ["columns":protected]=> array(0) { } ["keyField":protected]=> NULL ["keyTable":protected]=> NULL ["valueField":protected]=> NULL ["valueTable":protected]=> NULL ["rewound":protected]=> bool(false) ["row":protected]=> NULL ["key":protected]=> NULL ["count":protected]=> NULL ["totalCount":protected]=> NULL }

Chociaż nie ma takiej wartości w polu field_16. W jaki sposób mogę sprawdzać czy $res zwraca false lub true ? W tym wypadku nie ma takiej możliwości. Dopiero jak przelecę po tym foreachem, to widzę czy zapytanie coś zwróciło czy pusty wynik. Ale w moim przypadku nie mogę użyć foreacha. 

Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0
  • Administrator
  • Solution
1 minutę temu, Mateusz_K napisał:

Cześć, robię zapytanie do bazy w ten sposób : 


$res = \IPS\DB::i()->select('field_16', 'cms_custom_database_7', array('field_16=?', $nr) );

Wynik takiego zapytania to ( robię var_dump($res) ) :


object(IPS\Db\Select)#172 (17) { ["query"]=> string(97) "SELECT field_16 FROM `orig_ipb_cms_custom_database_7` AS `cms_custom_database_7` WHERE field_16=?" ["binds"]=> array(1) { [0]=> string(16) "5320772031672620" } ["joinBinds":protected]=> array(0) { } ["db":protected]=> object(IPS\Db)#12 (19) { ["affected_rows"]=> int(-1) ["client_info"]=> string(79) "mysqlnd 5.0.11-dev - 20120503 - : 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $" ["client_version"]=> int(50011) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(52) ["host_info"]=> string(21) "46.29.23.9 via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(20) "5.5.37-0+wheezy1-log" ["server_version"]=> int(50537) ["stat"]=> string(159) "Uptime: 116578867 Threads: 26 Questions: 28255365355 Slow queries: 65044 Opens: 7380966 Flush tables: 1 Open tables: 512 Queries per second avg: 242.371" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(908108518) ["warning_count"]=> int(0) } ["stmt":protected]=> NULL ["multiDimensional":protected]=> int(0) ["useWriteServer":protected]=> int(0) ["columns":protected]=> array(0) { } ["keyField":protected]=> NULL ["keyTable":protected]=> NULL ["valueField":protected]=> NULL ["valueTable":protected]=> NULL ["rewound":protected]=> bool(false) ["row":protected]=> NULL ["key":protected]=> NULL ["count":protected]=> NULL ["totalCount":protected]=> NULL }

Chociaż nie ma takiej wartości w polu field_16. W jaki sposób mogę sprawdzać czy $res zwraca false lub true ? W tym wypadku nie ma takiej możliwości. Dopiero jak przelecę po tym foreachem, to widzę czy zapytanie coś zwróciło czy pusty wynik. Ale w moim przypadku nie mogę użyć foreacha. 

Tak:

try
{
$res = \IPS\DB::i()->select('field_16', 'cms_custom_database_7', array('field_16=?', $nr) )->first();
}
catch( \UnderflowException $e ) 
{

}

jak wejdzie do catch() to znaczy, że pole field_16 nie ma takiej wartości jak ustawiłeś w zmiennej $nr

  • Thanks 1
Link to post
Share on other sites
Guest
This topic is now closed to further replies.
  • Dołącz do pierwszego newslettera Invision Community

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.