Я использую базу данных SQL (MSSQL) Server на Windows Server. Мое соединение с базой данных работает отлично. Я пытаюсь получить данные с помощью Select Query. Вот мой код,
db_functions.php
public function login($username, $password)
{
$sqlString = "SELECT CompId , BUCode , Role from
PRIME_APPUSR WHERE UserName = ? AND PassWord = ?";
$params = array($username, $password);
$stmt = sqlsrv_query($this->conn, $sqlString, $params);
if ($stmt === false) {
die(print_r(sqlsrv_errors(), true));
}
$rows = sqlsrv_has_rows($stmt);
if ($rows === true) {
while ($row = sqlsrv_fetch($stmt)) {
$response["CompId"] = sqlsrv_get_field($stmt, 0);
$response["BUCode"] = sqlsrv_get_field($stmt, 1);
$response["Role"] = sqlsrv_get_field($stmt, 2)
}
return $response;
} else {
return false;
}
}
login.php
<?php
require_once 'db_functions.php';
$db = new db_functions();
if (isset($_POST['USERNAME']) && isset($_POST['PASSWORD'])) {
$USERNAME = $_POST['USERNAME'];
$PASSWORD = $_POST['PASSWORD'];
$result1 = $db->login($USERNAME, $PASSWORD);
if (!$result1) {
$arr["response"] = "Error.";
} else {
$arr["response"] = $result1;
}
echo json_encode($arr);
} else {
$arr["response"] = "Invalid Parameters";
echo json_encode($arr);
}
?>
у меня вопрос, я получаю ложь от этой функции. может ли кто-нибудь помочь решить эту проблему.?
"SELECT CompId , BUCode Role у вас отсутствует запятая перед RoleА это АБСОЛЮТНО НЕ СПОСОБ СОХРАНЕНИЯ / ВОССТАНОВЛЕНИЯ ПАРОЛЕЙ
@Martin: hi Поместил неуместную запятую, фактический запрос был большим, поэтому здесь написано только 3 столбца. исправлено в коде.
@RigertaDemiri: возвращено ложное значение
@RigertaDemiri : false value returned откуда именно вернулся?
@Martin: login.php - это то место, откуда я выполняю функцию.
@Martin: Я знаю, что это не так, но это самый первый запрос, я начинаю работать с PHP. Пожалуйста, помогите мне решить эту проблему, я не смогу двигаться дальше и учиться, пока не решу эту проблему.
@RigertaDemiri: код обновлен
@javabee вы проверили журналы ошибок PHP? Вы выводили значения, чтобы знать, что а) значения находятся в базе данных и б) значения запроса верны?
этот подход небезопасен, попробуйте использовать php.net/manual/en/ref.pdo-sqlsrv.php и, возможно, этот github.com/Microsoft/msphpsql/tree/PHP-7.0
@Martin вопрос о MSSQL
@Martin: Нашел проблему. в моей таблице 300 строк, и ни одна из них не соответствует значениям, с которыми я фактически проверяю перекрестную проверку.






$ sqlString = "ВЫБРАТЬ CompId, BUCode, роль из PRIME_APPUSR ГДЕ UserName =? И PassWord =? ";
Я думаю, вам нужно ',' между BUCode и Role
Привет. Помещена неуместная запятая, фактический запрос был большим, поэтому здесь написано только 3 столбца. исправлено в коде.
@javabee, пожалуйста, покажите свой полный SQL, чтобы мы могли увидеть, что может вызвать его сбой
@Martin: Добавлен еще один файл. мои подключения к базе данных работают, поэтому добавлен только этот файл
Какая у вас ошибка?