Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PDO, Bind i wysypka PHPa
Forum PHP.pl > Forum > Bazy danych > Oracle
DavidPL
Witam,
Drobny problemik z którym walczę i nie mogę znaleźć rozwiązania.

Mam tabelkę o nazwie TEST_TABLE z następującymi polami: ID int(10,0) oraz TEXT różne typu: patrz dalej

oraz kod php operujący na tej tabeli zaczerpnięty żywczem z manuala:

  1. <?php
  2. $sql = 'SELECT id, text FROM test_table';
  3. try
  4. {
  5. $stmt = $this->m_pdoConnection->prepare($sql);
  6. $stmt->execute();
  7.  
  8. /* Bind by column number */
  9. $stmt->bindColumn(1, $id);
  10. $stmt->bindColumn(2, $text);
  11.  
  12. while ($row = $stmt->fetch(PDO::FETCH_BOUND))
  13. {
  14. $data = $id . "t" . $text . "t";
  15. print $data;
  16. }
  17. }
  18. catch (PDOException $e)
  19. {
  20. print $e->getMessage();
  21. }
  22. ?>


Teraz tak: dla pola TEXT typu
- varchar(4000): dostaję poprawne wyniki
- clob: wysypka php-a
- long: Warning: PDOStatement::fetch() [function.fetch]: column 1 data was too large for buffer and was truncated to fit it in ...skrypt.php... on line ...xxx...

W żaden sposób nie udaje mi się wyciągnąć całej wartości siedzącej w tym polu... Albo nie mogę zapisać tam więcej niż 4 tyś. znaków (varchar), albo dostaję warning a zwracana wartość jest obcinana do około 1 tyś znaków (long), albo php się wysypuje.
Byłbym bardzo wdzięczny gdybyście mogli sprawdzić i napisać, czy u Was zachowuje się to tak samo.
fander
$stmt->bindColumn(2, $text);
Powinienes zamienić na
$stmt->bindColumn(2, $text, PDO::PARM_LOB);

http://pl2.php.net/manual/pl/pdo.lobs.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.