2015-02-06 71 views
0

我已经搜索了这个,但我可以找到的答案只提供更详细的错误报告 - 我知道为什么存在错误我试图防止错误发生!PHP注意:试图获取非对象的属性

我的代码是:

$player_sql = "SELECT player FROM player_instruments WHERE instrument = '".$instrument_id."'" . $users_helping; 
 
$result = $db->query($player_sql) or trigger_error($db->error); 
 
if ($result->num_rows > 0) { 
 
    while($row = $result->fetch_assoc()) { 
 
\t $position_where .= $row['player'] .","; 
 
\t }

现在,当有结果这个问题不会产生错误,但没有从查询结果我收到的错误:

PHP Notice: Trying to get property of non-object

这是因为语句$ result-> num_rows没有结果,不幸的是这是这行代码应该检查ING!

这么长和短,我该如何验证结果是否存在,如果没有任何结果出现这个错误?

+0

查询返回false,您在那里有错误。 '$ users_helping' var中有什么? – panther 2015-02-06 12:03:28

+0

$结果可能是一个布尔值?检查快速 – Grushton94 2015-02-06 12:03:40

+0

我找到了解决方案,它在变量$ users_helping中。这产生了“AND IN()”的值,而这又导致错误出现。修复这个,所以它产生了“AND IN(0)”,意味着没有错误产生,谢谢大家。 – leicstbn 2015-02-11 13:22:06

回答

2

检查$结果是花了一两个小时,试图找出这一个,并在许多不同的网站对象

if (is_object($result) && $result->num_rows > 0) { 
0

我会用实际的术语来阐述它。有2种方式json_decode。取决于您使用的是哪一种,您应该如何在代码中对它做出回应。

1: $Response_decode1 = json_decode($response1, TRUE); 

2: $Response_decode2 = json_decode($response2); 

选项1使响应$ Response_decode1的行为像一个本地PHP数组,可按名称调用。 例如在调用儿童时使用方括号(以PHP为单位)。

1: $Response_decode1['level1']['level2'] 

选项2使得响应$ Response_decode2行为像与由名称

2: $Response_decode2->level1->level2 

EG 类型1

foreach ($Response_decode1['level1']['level2']['level3'] as $entry){ 
     $TelNo .= $entry['value']; 
     $TelNo .= "/"; 
    } 

EG 类型2

称为(子)的对象一个响应对象
foreach ($Response_decode2->level1->level2->level3 as $entry){ 
     $TelNo .= $entry->value; 
     $TelNo .= "/"; 
    } 

我相信这会有帮助

相关问题