Возвращает BOOLEAN значение, если элемент существует в базе данных SQLITE - PullRequest
0 голосов
/ 10 апреля 2020

Мне нужно вернуть логическое значение TRUE или FALSE, если в базе данных есть строка. Ничего больше. С кодом, приведенным ниже, логическое значение не возвращается! Какой правильный синтаксис?

$EntryExistsBoolean = $db->query("SELECT name FROM myTable WHERE EXISTS (SELECT name FROM myTable WHERE company=SmartCo");

if ($EntryExistsBoolean === false)
    {
        echo "Item does not exist in the database";
    }
    else
    {
        echo "Item found in the database";
    }

Ответы [ 3 ]

0 голосов
/ 10 апреля 2020

Я бы go что-то попроще:

SELECT COUNT(*) FROM myTable WHERE company = 'SmartCo'

и затем проверил возвращаемое целое число, чтобы выяснить, есть ли 0, 1 (или более) компаний с таким именем

0 голосов
/ 10 апреля 2020

В SQLite логическое значение равно либо 1, либо 0. Итак, все, что вам нужно, это:

SELECT MAX(company='SmartCo') AS bool FROM myTable

Если все, что вам нужно, это получить строку, когда значение есть или нет строки, если значение отсутствует, тогда это проще:

SELECT 1 FROM myTable WHERE company='SmartCo' 
0 голосов
/ 10 апреля 2020

Ваш текущий запрос имеет синтаксическую проблему, потому что строковый литерал не имеет правильных кавычек. Я бы использовал этот запрос, хотя:

SELECT EXISTS (SELECT 1 FROM myTable WHERE company = 'SmartCo')

Он вернется, если в вашей таблице будет хотя бы одна запись, где компания SmartCo. В противном случае он вернул бы false.

$sql = "SELECT EXISTS (SELECT 1 FROM myTable WHERE company = 'SmartCo')";
$EntryExistsBoolean = $db->query($sql);
if ($EntryExistsBoolean === false) {
    echo "Item does not exist in the database";
}
else {
    echo "Item found in the database";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...