弄清楚为什么我收到资源ID#5错误

时间:2012-03-17 22:26:36

标签: php

这是我的代码的一部分,echo是测试值,它给了我资源ID#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输出/错误。

有人可以更正我的代码中的错误吗?并解释为什么它不能给我所需的输出?

4 个答案:

答案 0 :(得分:4)

这不是错误。这类似于在未指定索引的情况下尝试打印数组时,只打印字符串“Array”。您可以使用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"];
    }

答案 1 :(得分:3)

您对echo $counter的意思是什么? $id是一种资源,因为mysql_query() returns a resource

如果您尝试从查询中获取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,因为您似乎只对获取单行感兴趣。

答案 2 :(得分:0)

你正在寻找

吗?
while ($row = mysql_fetch_array($id)) {
 echo $row['id'];
}

答案 3 :(得分:0)

$ 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);