mysql_query返回通知“试图获取非对象的属性”

时间:2016-05-17 08:26:17

标签: php mysql mysqli

我正在尝试使用旧的PHP脚本,但我仍然注意到这一点:

  

注意:尝试在...中获取非对象的属性

该通知基于此代码的最后一行:

$result_id_check = mysql_query("select ses_userid from fe_sessions where ses_id = '".$_COOKIE['fe_typo_user']."';");
$row_check = mysql_fetch_object($result_id_check);

if ($row_check->ses_userid) {

我也尝试过使用mysql i _query和mysql i _fetch_object但不会做任何更改。

我有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

此错误通常表示查询失败。

你应该像这样检查错误,如果在双引号字符串中使用{$_COOKIE['fe_typo_user']}形式的变量扩展,也可以使字符串连接更简单,或者这也可以工作{ {1}}

$_COOKIE[fe_typo_user]

这样当你用你的SQL犯小错误时,你会直接告诉他们,你不必怀疑是什么问题。

  

请不要使用the mysql_ database extension,它   已被弃用(在PHP7中永远消失)   特别是如果您只是学习PHP,请花费精力学习$sql = "select ses_userid from fe_sessions where ses_id = '{$_COOKIE['fe_typo_user']}'" $result_id_check = mysql_query($sql); if ( $result_id_check === false ) { echo mysql_error(); echo 'Bad SQL : ' . $sql; exit; } $row_check = mysql_fetch_object($result_id_check); 数据库扩展。   Start here

     

您还应该使用参数化查询(在PDOmysqli_数据库扩展中提供,但不是旧的已弃用PDO扩展名),以避免SQL Injection Attack特别是如果您正在使用从mysql_$_POST$_GET

获取的数据      

如果您考虑转到$_COOKIEmysqli_,请阅读此内容Can I mix MySQL APIs in PHP?

答案 1 :(得分:0)

在使用$row_check->ses_userid之前,只需检查$ row_check是真还是假。

if ($row_check) {
    if ($row_check->ses_userid) {

    }
}