LINUX.ORG.RU
ФорумTalks

Пехапеционное БДуныние

 ,


0

1

Опасен мир веб-программиста. Удивительные чудеса поджидают его за каждым файлом.
Вот пример:

$ret = $db->query($sql);
   
   echo "numColumns()=".$ret->numColumns();
   echo "columnType(0)=".$ret->columnType(0)."<br>";
   
   if (($ret->numColumns() > 0) && ($ret->columnType(0) != SQLITE3_NULL))
   {
       echo "in!";
   }else
   {
      echo "out!";
      return false;
   } 


Вот результат:

numColumns()=1columnType(0)=5
out!


Весьма неожиданно. И тут программист начинает подозрительно посматривать на константу SQLITE3_NULL, которая оказывается равна 5.
Тю — скажете вы — на то они и константы чтобы не возиться непосредственно с числами. Не твоё, программист, собачье дело какое там числовое значение у этой константы.
Вот только беда в том что значение columnType всегда равно SQLITE3_NULL. Есть поле? Его тип NULL. Нет поля? Его тип NULL. NULL всегда. NULL во всём. Улю-лю, ура!

Вот так и живём.

Deleted

так а в чем проблема то?

ggrn ★★★★★ ()

Потому что To find the type of columns, you need to ‘query’ the SQL sentence, ‘fetchArray’ the 1rst row, and then extract the name and type of each column.

query у тебя есть, а fetch нет.

sjinks ★★★ ()

Слышь, ты это, завязывай мешать в кучу программистов и PHP.

Miguel ★★★★★ ()
Ответ на: комментарий от Miguel

А вот и питонисты подтянулись с «ПХП — плохо» :)

Deleted ()
Ответ на: комментарий от Miguel

мешать в кучу программистов и PHP

мешать в кучу программистов и себя

/fixed

no-such-file ★★★★★ ()

Весьма неожиданно

Люди которые лезут в кишки, вместо того чтобы использовать pdo должны страдать по определению.

no-such-file ★★★★★ ()

PHP слишком сложен для ТС-а

Harald ★★★★★ ()

У меня подозрение, что автор хочет сие:

    $res = $db->query($sql);

    if ($res->fetchArray() !== false) {
        echo 'in!';
        $res->reset();
    } else {
        echo 'out!';
        return false;
    }
Darth_Revan ★★★★★ ()
Последнее исправление: Darth_Revan (всего исправлений: 2)

а скажи с чего ты решил что тип поля (не значение) вообще может быть нулл?

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Потому что так написано в документации: SQLITE3_INTEGER, SQLITE3_FLOAT, SQLITE3_TEXT, SQLITE3_BLOB, or SQLITE3_NULL

Deleted ()
Ответ на: комментарий от Deleted

Ещё раз — тип поля, а не тип данных значения содержащегося в этом поле.

Предполагаю, нулл тут, судя по тому, что я распарсил с твоих слов, вообще фаллбек на случай если ты обратился по ключу «$ret->columnType(KEY)», которого не существует.

Экземпляром какого класса является «$db»? Экземпляром какого класса является «$ret»? Для метода «columnType(KEY)» значение ключа действительно должно быть числовым индексом? Метод «columnType(KEY)» действительно возвращает значения, которые можно сверять по константам «SQLITE3_*»?

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Экземпляром какого класса является «$db»? Экземпляром какого класса является «$ret»?

Он php_sqlite3 использует (зачем то). Соответственно $ret это SQLite3Result. В этих же доках можно лицезреть сниппет который ТС бездумно скопипастил и пытается осилить методом тыка.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Тут был один, с питона бомбил. Теперь этот с пхп бомбить будет, пока не забанят. А нормальные люди используют фреймворки.

InterVi ★★ ()
Ответ на: комментарий от InterVi

Это его уже третья тема. Пока делает сайт, отписывает на ЛОР-е. В первой писал, что жизнь пошла под откос, видимо не зря

CryNet ★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)