我有一个带有此声明的PHP脚本:
$query = "SELECT type
FROM users
WHERE username = '$username'";
$result = $database->query($query);
if($result == 1) {
echo "whatever";
continue;
}
问题是if if从不运行,当我在if运行之前创建print语句来打印$ result时,它会输出一个Reference ID#。因此,结果永远不会== 1,因为它被分配了参考ID#。
我到底做错了什么?如何分配作为INT的'type'的值,而不是它的内容Reference ID#?
答案 0 :(得分:7)
你必须先获取该行......
$query = "SELECT type FROM users WHERE username = '$username'";
$result = $database->query($query);
$row = mysql_fetch_assoc($result);
if($row['type'] == 1)
{
echo "whatever";
}
答案 1 :(得分:3)
您需要使用mysql_fetch_assoc()或mysql_fetch_array()将结果导入数组:
$query = $database->query("SELECT type FROM users WHERE username = '$username'");
$result = mysql_fetch_assoc($query);
if($result['type'] == 1)
{
echo "whatever";
continue;
}
答案 2 :(得分:2)
试
<?php
$result = mysql_fetch_assoc($database->query($query));
$id = $result['type'];
if($type == 1)
{
答案 3 :(得分:0)
是。你必须检查它:
$query = "SELECT type FROM users WHERE username = '$username'";
$result = $database->query($query);
if($result)
{
echo "whatever";
continue;
}
这是一个布尔检查,但是...在php中我们有弱类型 - 一切都是真的,除了 false , 0 ,''< / strong>(空字符串),null等。
如果你想进行包括类型的良好布尔检查,那么你有:
if(bool_val === true)
{
..
}
// or
if(bool_val && is_bool(bool_val))
{
..
}
此查询对象在php中返回结果资源。你可能会收到#Resource ID,它是php代码中的某种指针。
如果您收到类似的内容(#Resource ID) - 这表示您的查询已正确传递且未发生错误。