Я работаю над запросом SQL, который выбирает результаты на основе внешнего ключа идентификационного номера пользователя и отображает результат, если в сопоставленной таблице есть какие-либо совпадающие записи. Когда я пытаюсь использовать переменную PHP в своем предложении WHERE, создается впечатление, что SQL-запрос вообще не распознает значение, даже если я печатаю переменную, там есть значение.
Я попытался изменить запрос с помощью "'. $variable.'"
И '. $variable. '
'. $variable. '
'. $variable. '
, но я все еще получаю тот же результат. Вот мой код:
$usernum = intval($_SESSION['usernum']);
$query = "SELECT * FROM dinosaurs WHERE UserNum = '$usernum'";
Когда я ввожу переменную вручную (например, "SELECT * FROM dinosaurs WHERE UserNum = '6'";
она работает, но когда я пытаюсь выполнить этот запрос, я получаю следующий результат:
SELECT * FROM dinosaurs WHERE UserNum = ''
returned 0 records.
Похоже, переменная просто показывает пустое значение в операторе SQL? Как мне заставить его распознавать значение переменной?
РЕДАКТИРОВАТЬ: РЕШЕНИЕ Я понял это! Это была глупая ошибка, когда я объявлял переменную внутри другой функции, а не глобально, поэтому я переместил объявление в правильную функцию следующим образом:
// print_r($json);
$usernum = intval($_SESSION['usernum']);
}
Так что это говорит о том, что я должен уделять больше внимания своему собственному коду :)
Вот мой оригинальный код:
session_start();
if (isset($_SESSION['username'])) {
$firstname = htmlspecialchars($_SESSION['firstname']);
$usernum = intval($_SESSION['usernum']);
$username = $_SESSION['username'];
} else echo "<script> window.location.assign('uhoh.html'); </script>";
require_once 'connect.php';
require_once 'pretty_json.php';
submitQuery($conn, $json);
$conn->close();
Я объявил переменную $usernum
в оригинальном операторе if, а не глобально. Поэтому, когда я попытался получить к нему доступ в функции submitQuery, для нее ничего не было установлено.
Чтобы решить эту проблему, я просто объявил переменную $usernum
в начале функции submitQuery.