1. <?php
  2.  
  3. db_read('*','cats','dinfo','on',' WHERE ID='.$d); echo $dinfo[0];
  4.  
  5. function db_read($co,$t,$a,$y,$o) {
  6. $result=mysql_query('SELECT \"'.$co.'\" FROM '.$GLOBALS['db_pre'].$t.$o) or db_err();
  7.  
  8. switch($y)
  9. {
  10.  case 'oa': $GLOBALS[$a]=mysql_fetch_assoc($result); break;
  11.  case 'on': $GLOBALS[$a]=mysql_fetch_row($result); break;
  12.  case 'ta': $i=0; while($GLOBALS[$a][$i]=mysql_fetch_assoc($result)) { $i++; } break;
  13.  case 'tn': $i=0; while($GLOBALS[$a][$i]=mysql_fetch_row($result)) { $i++; } break;
  14.  default: $GLOBALS[$a][$y]=mysql_fetch_row($result);
  15. }
  16. unset($result); }
  17.  
  18. ?>

Tak wygląda kod z funkcją odczytującą i linijką wyciętą z kodu właściwego. Zainteresujcie się "CASE 'ON'". Czy ten sposób odczytania danych jest poprawny?

$dinfo[0] po odczytaniu (jak w kodzie na początku widać) ma wartość * (dlaczego?). Próbowałem zrobić tak:
  1. <?php
  2.  
  3. case 'on': while($GLOBALS[$a]=mysql_fetch_row($result)) { } break;
  4.  
  5. ?>

Wtedy $dinfo[0] nie miało żadnej wartości (nawet, gdy z zapytania wytnę warunek "WHERE ID=1").

Czym to jest spowodowane?
UWAGA... W przypadku sposobu "CASE tn" jest to samo... (wartość: *).

Może jakiś błąd zrobiłem przy tworzeniu tabeli (wątpię, bo nawet ponownie tworzyłem)?


Naprawione...

Powodem były zbędne cudzysłowy w zapytaniu.