Это часть моего кода, а эхо – проверка значения, и оно дает мне идентификатор ресурса № 5
$id = mysql_query("SELECT id FROM users WHERE firstname='$submittedfirstname' AND lastname='$submittedlastname' AND email='$submittedemail'") or die(mysql_error()); $counter = mysql_num_rows($id); echo $id;
Я просто занимаюсь программированием и в последнее время вижу множество выходов / ошибок ID ресурсов при работе с базами данных.
Может ли кто-то исправить ошибку в моем коде? И объясните мне, почему он не дает мне требуемый результат?
Это не ошибка. Это похоже на то, когда вы пытаетесь распечатать массив без указания индекса, и печатается только строка «Массив». Вы можете получить доступ к фактическим данным, содержащимся в этих ресурсах (которые вы можете представить как набор данных), используя такие функции, как mysql_fetch_array ().
На самом деле, если бы здесь была ошибка, значение $ id не было бы ресурсом. Обычно я использую функцию is_resource (), чтобы убедиться, что все хорошо, прежде чем использовать переменные, которые должны содержать ресурс.
Я предполагаю, что вы намереваетесь это сделать:
$result = mysql_query("SELECT id FROM users WHERE firstname='$submittedfirstname' AND lastname='$submittedlastname' AND email='$submittedemail'") or die(mysql_error()); if(is_resource($result) and mysql_num_rows($result)>0){ $row = mysql_fetch_array($result); echo $row["id"]; }
Вы хотели бы echo $counter
? $id
– ресурс, потому что mysql_query()
возвращает ресурс .
Если вы пытаетесь получить значение столбца id
из запроса, вы хотите использовать, например, mysql_fetch_array()
.
Вот выдержка из http://php.net/mysql.examples-basic :
$query = 'SELECT * FROM my_table'; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); // Printing results in HTML echo "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo "\t\t<td>$col_value</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n";
Адаптированный к предоставленному вами коду, он может выглядеть примерно так:
$result = mysql_query("SELECT id FROM users WHERE firstname='$submittedfirstname' AND lastname='$submittedlastname' AND email='$submittedemail' LIMIT 1") or die(mysql_error()); if( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) { $id = $row['id']; } else { // No records matched query. }
Обратите внимание, что в моем коде я также добавил LIMIT 1
в запрос, поскольку кажется, что вас интересует только выборка одной строки.
Вы ищете
while ($row = mysql_fetch_array($id)) { echo $row['id']; }
?
$ kode_gel = substr ($ _ GET ['gel'], 0,3); $ no_gel = substr ($ _ GET ['gel'], 3,5);
$cek = mysql_query("SELECT id_arisan FROM arisan WHERE kode_gel = '".$kode_gel."' AND no_gel = '".$no_gel."'"); $result = mysql_fetch_array($cek); $id = $result['id_arisan']; header("location: ../angsuran1_admin.php?id=".$id);