Array to string conversion -> długi tekst nie chce się wykonać i wczytać, MySQL

0

Dzień dobry.

Mam tabelę w bazie, w której jedno z pól typu varchar(8000) kiedy zawiera kilkaset znaków, nie chce się wykonać po wykonaniu zapytania. Tabelka jest taka:

id tekst
1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Zapytanie:

$zapytanieSelect = 
       "SELECT r1.tekst
        FROM `moja_tabela` AS r1 
        JOIN
            (SELECT CEIL(RAND() *
                (SELECT MAX(id)
                FROM `moja_tabela`)) AS id) AS r2
        WHERE r1.id >= r2.id
        ORDER BY r1.id ASC
        LIMIT 1";

Wyskakuje błąd Notice: Array to string conversion
w linijce:

$wynik = $pdo->query($zapytanieSelect);

Jak skrócę długość danej w tabeli, to nie ma problemu. Nie wiem co to może być. Jakieś limity buforowe? Myślałem na początku że to przez polskie znaki, ale po zmianie na aaaaaaa... to samo.

Proszę o wskazówki
Dzięki
M.

2

spróbuj zrobić var_dumpa tej zmiennej. Może zwracany jest jakiś błąd etc.
metoda query i tak może zwrócić false przy błędzie i to też dobrze sprawdzać. Dodatkowo możesz sprawdzić potencjalne błędy https://www.php.net/manual/en/pdostatement.errorcode.php

0

@mpaw: no nie wiem tutaj działa:
http://sqlfiddle.com/#!9/3b32f3/1

0

Dzięki.

Dodałem flagę $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Teraz mówi, że nie zna kolumny tekst, ale jak? Jak dane są krótsze to zna, a jak dłuższe to nie? :/

Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'r1.tekst'

OK. POPRAWKA. Omyłkowo nadpisałem bazę i ustawiłem złą nazwę kolumny. Po okodowaniu poleceń, powodem są znaki spoza zakresu, które próbowałem przepuścić przez json

1 użytkowników online, w tym zalogowanych: 0, gości: 1