#php #mysql #pdo #null
#php #mysql #pdo #null
Вопрос:
table
-----
id column1
1 some random text
2 more random text
3
4 blah blah
5
6
7
8
9
$sqlData7 = $this->con->prepare("SELECT id, column1 FROM table WHERE column1 IS NOT NULL");
$rowTotal7 = $sqlData7->rowCount();
$attIdArr7 = $sqlData7->fetchAll(PDO::FETCH_COLUMN, 0);
print_r($attIdArr7);
Это должно вернуть:
Array ( [0] => 1 [1] => 2 [2] => 4 )
но возвращает
Array ( )
Что я делаю не так, что он не собирает столбцы not null?
Я не думаю, что мне нужен дополнительный логический столбец «is_column1_Null», который я могу запросить, но после половины дня, пытаясь заставить это работать, я собираюсь добавить его.
большое спасибо
Комментарии:
1. Это сомнительный вопрос, поскольку приведенная ниже демонстрация наглядно демонстрирует, что текущий запрос действительно работает
2. Почему он должен возвращать это? Насколько я вижу, вы не выполнили запрос
Ответ №1:
Вам нужно вызвать $sqlData7->execute()
<?php
$sqlData7 = $pdo->prepare("SELECT id, column1 FROM `table` WHERE column1 IS NOT NULL");
$sqlData7->execute();
$rowTotal7 = $sqlData7->rowCount();
$attIdArr7 = $sqlData7->fetchAll(PDO::FETCH_COLUMN, 1);
var_dump($attIdArr7);
Комментарии:
1. У него был SQL execute, я просто забыл добавить его в пример кода. Проблема была в фактическом запросе PDO SQL, поэтому он возвращал пустой массив. Решение, которое сработало, было предоставлено Сурьяпалом Рао.
Ответ №2:
Вы можете написать следующий запрос, чтобы получить ожидаемый результат
SELECT id, column1 FROM table column1 IS NOT NULL AND TRIM(column1) <> '';
Приведенный выше дизайн базы данных предполагает, что столбец пуст и не имеет значения null, но также может быть null. Итак, я проверяю два условия, проверяю, не является ли столбец null, а также проверяю, не пусто ли оно. Я думаю, что он вставляет данные без какой-либо проверки, поэтому он также вставляет пустые значения.
Комментарии:
1. Огромное спасибо. Это решило проблему.
2. Пожалуйста, добавьте некоторые пояснения к вашему ответу, чтобы другие могли извлечь из него уроки. Что вы изменили и почему?
3. Извините, спасибо, что напомнили мне объяснить ситуацию с исправлением данных. @NicoHaase
4. Это не отвечает на вопрос, почему SQL-запрос не находит строки, которые НЕ являются NULL. Вы неправильно поняли вопрос, и ваш ответ неверен.