Хорошо, мне так надоело. Я потратил большую часть своего свободного времени на прошлую неделю, пытаясь понять это. Я знаю, что запрос изменился в SQL, но я не могу понять это. Все остальные сообщения, которые я могу найти, кажутся устаревшими. Если бы кто-нибудь мог мне помочь, я бы очень признателен.
Все, что я пытаюсь сделать, это получить идентификатор строки, используя уникальную «кодовую фразу», которую я вручную ввел в базу данных, а затем установить ее как данные сеанса, чтобы я мог использовать эти данные на других страницах. Я чувствую, что это не должно быть так сложно.
Для целей демострации здесь приведен мой код с использованием более старой mysql_query.
<?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'test321'; $db = 'local_test'; $conn = mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($db); ?> <?php include 'includes/connection.php'; $pass = $_POST['inputPass']; if(!$_POST['submit']) { echo "please fill out the form"; header ('location: user_authenticate.php'); } $query = "SELECT id FROM users WHERE pass= '$pass'"; $id = mysql_query($query); $_SESSION["userId"] = "$id"; print $pass; print $id; print $_SESSION["userId"];?>
Я пробовал много вещей, поэтому у меня появилось много разных ошибок. Я надеюсь, что кто-то может указать мне в правильном направлении. Каков наилучший способ сделать это?
Во-первых, не используйте API mysql
; он устарел и не будет работать на PHP 7.
Теперь, когда это не работает, mysql_query()
возвращает ресурс набора результатов (который похож на объект), который может содержать несколько строк, которые могут содержать несколько столбцов . Чтобы получить доступ к содержимому этого ресурса, вы должны fetch
строку в массив, а затем индексировать в этот массив для нужного столбца. Вам нужно сделать что-то вроде этого:
$query = "SELECT id FROM users WHERE pass= '$pass'"; $result = mysql_query($query); $row = mysql_fetch_assoc($result); $id = $row['id'];
а затем вы можете использовать значение $id
.
То же самое относится к mysqli::query()
, который возвращает объект mysqli_result
.