我正在尝试使用旧的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但不会做任何更改。
我有什么想法可以解决这个问题吗?
答案 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您还应该使用参数化查询(在
获取的数据PDO
和mysqli_
数据库扩展中提供,但不是旧的已弃用PDO
扩展名),以避免SQL Injection Attack特别是如果您正在使用从mysql_
或$_POST
或$_GET
如果您考虑转到
$_COOKIE
或mysqli_
,请阅读此内容Can I mix MySQL APIs in PHP?
答案 1 :(得分:0)
在使用$row_check->ses_userid
之前,只需检查$ row_check是真还是假。
if ($row_check) {
if ($row_check->ses_userid) {
}
}