Что такое «Ресурс №»?

ЗДРАВСТВУЙ

Я получаю Resource # 6 и Resource # 7, когда я печатаю следующие переменные:

$salty_password = sha1($row['salt'], $_POST['password']); if(isset($_POST['subSignIn']) && !empty($_POST['email']) && !empty($_POST['password'])) { $query = "SELECT `salt` FROM `cysticUsers` WHERE `Email` = '" . $_POST['email'] . "'"; $request = mysql_query($query,$connection) or die(mysql_error()); $result = mysql_fetch_array($request); $query2 = "SELECT * FROM `cysticUsers` WHERE `Email` = '". $_POST['email']."' AND `Password` = '$salty_password'"; $request2 = mysql_query($query2,$connection) or die(mysql_error()); $result = mysql_fetch_array($request2); print_r($request); print_r($request2); if(@mysql_num_rows($request,$request2)) { $_SESSION['CLIFE']['AUTH'] = true; $_SESSION['CLIFE']['ID'] = $result['id']; // UPDATE LAST ACTIVITY FOR USER $query = "UPDATE `cysticUsers` SET `LastActivity` = '" . date("Ymd") . " " . date("g:i:s") . "' WHERE `id` = '" . mysql_real_escape_string($_SESSION['CLIFE']['ID']) . "' LIMIT 1"; mysql_query($query,$connection); if(!empty($_POST['return'])) { header("Location: " . $_POST['return']); }else{ header("Location: CysticLife-Dashboard.php?id=" . $_SESSION['CLIFE']['ID']); } } }else{ $_SESSION['CLIFE']['AUTH'] = false; $_SESSION['CLIFE']['ID'] = false; } ?> 

Попытка устранить этот фрагмент кода и не знать, что это значит. Я пытаюсь войти с явным текстовым паролем, с которым я подписался, после того, как он был хэширован и солен. Я чувствую, что я очень близко, но что-то не так. Помощь в том, почему это не работает, также будет очень признательна.

заранее спасибо

Solutions Collecting From Web of "Что такое «Ресурс №»?"

mysql_query() возвращает результирующие наборы как объекты resource типа (они не являются объектами с точки зрения кода PHP OOP, но я не могу придумать лучшего слова). Они содержат двоичные данные, которые могут быть прочитаны только определенными функциями, например mysql_fetch_*() .

Чтобы отлаживать ваши MySQL-запросы, вы должны проверять наличие ошибок с помощью mysql_error() и mysql_errno() и / или сохранять ваши SQL-выражения в переменных и печатать их.

Из того, что я вижу, вы выполняете два запроса, но перезаписываете одну и ту же переменную $result , не делая ничего о первом. Кроме того, mysql_num_rows() может рассчитывать только один результирующий набор за раз, поэтому вы не можете передать два набора результатов в один и тот же вызов.

Это внутренние типы данных PHP, называемые ресурсом .

Они не могут быть сериализованы (т. toString() Нет « toString() ») и поэтому отображаются как Resource#X

SQL-запросы через PHP выполняются с использованием переменной, известной как ресурс. Эта переменная в вашем коде совершенно бесполезна, кроме как передать каждой функции, которую вы хотите выполнить (т. Е. Изменить базу данных, выполнить запрос, захватить последнюю ошибку и т. Д.).

При этом выполнение запроса не возвращает никакой информации из базы данных, а просто ссылки на этот набор записей (где в PHP он хранит информацию). Затем вы использовали бы эту переменную в вызове, таком как mysql_fetch_array чтобы получить информацию о реальной строке.