这是我的代码的一部分,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输出/错误。
有人可以更正我的代码中的错误吗?并解释为什么它不能给我所需的输出?
答案 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);