#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 вне вашей программы, чтобы найти различия.