SQLSRV_QUERY опускает условие WHERE

#php #sql #sql-server #sqlsrv

Вопрос:

У меня есть запрос, который возвращает 10 строк, но когда я ставлю условие WHERE, в SQL Server возвращается только 8 строк, и это нормально! Но когда я пытаюсь сделать это на PHP, я получаю 10 строк вместо 8, поэтому по какой-то причине он не «читает» условие WHERE, и я не знаю почему.

Вот мой код:

 $conn = $this->ConnectToDatabase();
$query = "SELECT P.NAME FROM PEOPLE P WHERE P.SPECIAL_CHARACTER IN ('*', 'X')";
$temp = sqlsrv_query($conn, $query);
$result = array();
while( $row = sqlsrv_fetch_array( $temp, SQLSRV_FETCH_ASSOC )) {
   array_push($result, $row);
}
return $resu<
 

Поэтому, когда я это делаю, я получаю информацию о 10 строках вместо 8 , поэтому по какой-то причине она опускается, что странно. WHERE P.SPECIAL_CHARACTER IN ('*', 'X')

Это моя проблема. Этот запрос должен возвращать 8 строк, что он и делает в SQL Server, но когда я пытаюсь сделать это с PHP, он возвращает 10, и я не знаю почему, я не вижу ничего странного в том, ГДЕ.

Комментарии:

1. Вы уверены, что PHP подключается к тому же серверу и базе данных, которые вы запрашиваете в (предположительно) SSMS?

2. @AlwaysLearning Да, это так.. Я могу сделать около 20 различных запросов, и они будут работать нормально, но по какой-то причине этот запрос не работает.

3. Те же учетные данные пользователя, что и? т. Е. Может ли быть задействована безопасность на уровне строк ?

4. Итак, что еще вы сделали для отладки? Что происходит , когда у вас есть только * или X , что, если вы сделаете not in и т. Д

5. Обновите свой SELECT список (в программе), чтобы показать первичный ключ и столбец special_character, чтобы вы могли убедиться, что данные в этих дополнительных строках действительно содержат данные, которых вы не ожидали. Теперь протестируйте тот же SQL вне вашей программы, чтобы найти различия.