Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> if mi się zepsuł, Nie ma $rs'a w mieście
frelo
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.02.2006

Ostrzeżenie: (10%)
X----


  1. <?php
  2.  
  3. function query( $sql ) {
  4.     global $conn;
  5.     $rs = $conn->Execute( $sql );
  6.     print_r( $rs );
  7.     if ( ! $rs ) {
  8.         die( 'error' );
  9.     }
  10.     return $rs;
  11. }
  12.  
  13. ?>

poprawiam
---
nospor



Funkcja jak funkcja, zwraca record set ($rs) ADODB. Ciekawe jest to, że najpierw print_r() wyświetla $rs, a w następnej linijce już tego $rs'a nie i odpala die():

ADORecordSet_mysqli Object ( [databaseType] => mysqli [canSeek] => 1 [dataProvider] => native [fields] => Array ( [sectionId] => 533 [languageId] => 1 [baseVersionId] => 526 [parentId] => 1 [contentTypeId] => 1 [name] => Strona g?ówna [shortDescription] => [longDescription] => [activity] => 1 [toDelete] => 0 [position] => 1 [depth] => 1 ) [blobSize] => 100 [sql] => SELECT * FROM sections where sectionId='533' [EOF] => [emptyTimeStamp] => [emptyDate] => [debug] => [timeCreated] => 0 [bind] => [fetchMode] => 1 [connection] => ADODB_mysqli Object ( [databaseType] => mysqli [dataProvider] => native [hasInsertID] => 1 [hasAffectedRows] => 1 [metaTablesSQL] => SHOW TABLES [metaColumnsSQL] => SHOW COLUMNS FROM %s [fmtTimeStamp] => 'Y-m-d H:i:s' [hasLimit] => 1 [hasMoveFirst] => 1 [hasGenID] => 1 [isoDates] => 1 [sysDate] => CURDATE() [sysTimeStamp] => NOW() [hasTransactions] => [forceNewConnect] => [poorAffectedRows] => 1 [clientFlags] => 0 [substr] => substring [port] => [socket] => [_bindInputArray] => [nameQuote] => ` [_genIDSQL] => update %s set id=LAST_INSERT_ID(id+1); [_genSeqSQL] => create table %s (id int not null) [_genSeq2SQL] => insert into %s values (%s) [_dropSeqSQL] => drop table %s [database] => orzel [host] => localhost [user] => root [password] => rootpass [debug] => [maxblobsize] => 262144 [concat_operator] => + [length] => length [random] => rand() [upperCase] => upper [fmtDate] => 'Y-m-d' [true] => 1 [false] => 0 [replaceQuote] => \' [charSet] => [metaDatabasesSQL] => [uniqueOrderBy] => [emptyDate] => [emptyTimeStamp] => [lastInsID] => [hasTop] => [readOnly] => [genID] => 0 [raiseErrorFn] => [cacheSecs] => 3600 [arrayClass] => ADORecordSet_array [noNullStrings] => [numCacheHits] => 0 [numCacheMisses] => 0 [pageExecuteCountRows] => 1 [uniqueSort] => [leftOuter] => [rightOuter] => [ansiOuter] => [autoRollback] => [fnExecute] => [fnCacheExecute] => [blobEncodeType] => [rsPrefix] => ADORecordSet_ [autoCommit] => 1 [transOff] => 0 [transCnt] => 0 [fetchMode] => [_oldRaiseFn] => [_transOK] => [_connectionID] => mysqli Object ( ) [_errorMsg] => [_errorCode] => [_queryID] => mysqli_result Object ( ) [_isPersistentConnection] => 1 [_evalAll] => [_affected] => [_logsql] => [databaseName] => orzel ) [_numOfRows] => 1 [_numOfFields] => 12 [_queryID] => mysqli_result Object ( ) [_currentRow] => 0 [_closed] => [_inited] => 1 [_obj] => [_names] => [_currentPage] => -1 [_atFirstPage] => [_atLastPage] => [_lastPageNo] => -1 [_maxRecordCount] => 0 [datetime] => [adodbFetchMode] => 2 ) error

Kto to zrozumie ten jest gość. party.gif

Chyba if mi się zepsuł dry.gif Wszystko łyka oprócz false. Apache'a restartowałem bez efektu. Działam na Windows 2003.

Ten post edytował frelo 27.03.2006, 13:09:21


--------------------
monitorowanie pozycji w google - googlemon.pl
Go to the top of the page
+Quote Post
Adiasz
post
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 28.02.2004

Ostrzeżenie: (0%)
-----


sprawdz czy czasami nie wywolujesz funkcji query 2 razy i dla pierwszego zapytania zwraca tablice a dla drugiego bad? :-)
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Zmien tytul topicu - ten jest niezgodny z regulaminem!!!


uzyj:
  1. <?php
  2. if ( $rs === FALSE )
  3. {
  4.  die(...);
  5. }
  6. ?>


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
frelo
post
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.02.2006

Ostrzeżenie: (10%)
X----


Adiasz: zastanów się co piszesz. Dr_bonzo: bez zmian.

Najciekawsze że tej funkcji używam od jakiegoś czasu, dzisiaj mi się nagle zepsuła.


--------------------
monitorowanie pozycji w google - googlemon.pl
Go to the top of the page
+Quote Post
Adiasz
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 28.02.2004

Ostrzeżenie: (0%)
-----


Cytat(frelo @ 2006-03-27 13:08:42)
Adiasz: zastanów się co piszesz

hmm...przedstawiles swoj problem a ja Ci napisalem jaka moze byc tego przyczyna wiec nad czym mam sie zastanawiac?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Moim zdaniem Adiasz wysunął calkiem możliwą teorię. Ty nam nie pokazales jak uzywasz tej funkcji, tylko co masz w srodku. A w przypadky, gdy dostaniesz false, to print_r nic nie zwroci wiec tego nie widac. Wiec ty sie zastanow co piszesz. if dziala bez zarzutu

zeby miec pewnosc zrob se prosty test. wyswietl tą zmienną jeszcze raz przed die(). jesli pojawic ci sie drugi raz tablica, znaczy ze faktycznie if źle dziala. jesli nie, znaczy ze Adiasz ma racje winksmiley.jpg

  1. <?php
  2. function query( $sql ) {
  3. global $conn;
  4. $rs = $conn->Execute( $sql );
  5. echo 'Przed IF:';
  6. print_r( $rs );
  7. if ( ! $rs ) {
  8. echo 'W IF:';
  9. print_r( $rs );
  10. die( 'error' );
  11. }
  12. return $rs;
  13. }
  14. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
frelo
post
Post #7





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.02.2006

Ostrzeżenie: (10%)
X----


Ludzie! Przecież napisałem, że najpierw $rs jest, a w następnej linijce kodu już go nie ma! aaevil.gif

  1. <?php
  2.  
  3. print_r( $rs ); // pokazuje $rs'a, wyzej jest wydruk
  4. if ( ! $rs ) {
  5. die( 'error' ); // die odpala
  6. }
  7.  
  8. ?>


Inna sprawa że teraz wydruk $rs'a z print_r() urywa się w połowie. Jakieś cuda się dzieją, resetuję komputer.


--------------------
monitorowanie pozycji w google - googlemon.pl
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ludzie! Przecież napisałem...

Człowieku! Przeciez mi ci wyraźnie piszemy co może byc tego przyczyną.
Ty nam pokazales kod funkcji. a my ci mowimy, ze gdy ją źle wywolasz to takie krzaczki będziesz mial. Przyklad:
Masz funkcję:
  1. <?php
  2.  
  3. function funk( $tab ) {
  4.     $rs = $tab;
  5.     print_r( $rs );
  6.     if ( ! $rs ) {
  7.         die( 'error' );
  8.     }
  9.     return $rs;
  10. }
  11. ?>

I wiesz co mi ta funkcja zwraca? Proszę:
Cytat
Array ( [0] => 2 [1] => 3 [2] => 4 ) error
Jaki wniosek? że $rs jest a zaraz po ifie nie ma. Tak myslisz? Nic bardziej blędnego. Oto w jaki sposob ją wywolalem:
  1. <?php
  2. funk(array(2,3,4));
  3. funk(false);
  4.  
  5. ?>
Rozumiesz juz? Nas interesuje jak to wywolujesz. moze jakis refresh ci sie robi.
A wystarczy ze zmienisz funkcje o takie poprawki i bedzie wszystko jasne:
  1. <?php
  2. function funk( $tab ) {
  3.     $rs = $tab;
  4.     echo 'przed IF:';
  5.     print_r( $rs );
  6.     if ( ! $rs ) {
  7.         echo 'w IF:';
  8.         print_r( $rs );
  9.         die( 'error' );
  10.     }
  11.     return $rs;
  12. }
  13.  
  14. ?>

Cytat
przed IF:Array ( [0] => 2 [1] => 3 [2] => 4 ) przed IF:w IF:error

No ale latwiej jest nakrzyczec, niz sprobowac sie zastanowic...
więc jesli będziesz na tyle łaskawy i wprowadzisz te poprawki o które prosilem, byloby super smile.gif No i pokaz co wowczas wyswietla


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
frelo
post
Post #9





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.02.2006

Ostrzeżenie: (10%)
X----


Zgadza się, nie zastanowiłem się nad tym konceptem wielokrotnego wywołania. Ale to nie było to, bo w pewnym momencie momencie miałem jeszcze przed if'em print_r( $sql ) tak że widziałbym sql nawet jeśli nie byłoby $rs'a. W każdym razie apache najwyraźniej wyzdrowiał bo dzisiaj już wszystko działa. cool.gif


--------------------
monitorowanie pozycji w google - googlemon.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 21:46