首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP在chrome中工作,但在firefox中不工作

问PHP在chrome中工作,但在firefox中不工作
EN

Stack Overflow用户
提问于 2013-05-31 18:26:54
回答 4查看 2.1K关注 0票数 1

下面的代码在chrome上运行得很好,但是当我试图在firefox上加载它时,会说:‘注意:试图在*/loginTrueFunctions.php第23行中获取非对象的属性’

以下是“问题代码”:

代码语言:javascript
复制
$firstName = $sqlObjectFirstName->firstName;

和:

代码语言:javascript
复制
$lastName = $sqlObjectLastName->lastName;

PHP代码:

代码语言:javascript
复制
function getFullName($id, $mysqli_connect){
    if(isset($_SESSION['login'])){

                    $queryFirstName = mysqli_query($mysqli_connect,"
                        SELECT firstName 
                        FROM users
                        WHERE id = '$id'
                        LIMIT 1
                    ");
                    $sqlObjectFirstName = mysqli_fetch_object($queryFirstName);
                    $firstName = $sqlObjectFirstName->firstName;
                    printf( ucfirst($firstName));
                    printf(' ');

                    $queryLastName = mysqli_query($mysqli_connect,"
                        SELECT lastName 
                        FROM users
                        WHERE id = '$id'
                        LIMIT 1
                    ");
                    $sqlObjectLastName = mysqli_fetch_object($queryLastName);
                    $lastName = $sqlObjectLastName->lastName;
                    printf( ucfirst($lastName));
    }
}

提前感谢!

编辑:如果我将结果作为数组调用,firefox既不会给出错误,也不会给出结果,但是chrome会给出这个错误:不能使用stdClass类型的对象作为数组。

然后我将mysqli_fetch_object更改为mysqli_fetch_array,结果是: Chrome工作正常,firefox不会出错,也不会给出结果。

EN

回答 4

Stack Overflow用户

发布于 2013-05-31 18:30:09

可能您的会话(或cookie)内容在浏览器之间是不同的(例如,您登录的是一个,而不是另一个)。做,做

代码语言:javascript
复制
var_dump($_SESSION); var_dump($_COOKIE); 

并查看

票数 1
EN

Stack Overflow用户

发布于 2013-05-31 18:32:30

在尝试访问mysqli_fetch_object($queryFirstName);之前,请检查它的返回值。很可能您的查询没有返回任何内容。

另外要提到的是,从不将用户数据直接传递到查询,因为您容易受到sql注入攻击。仅仅因为你在使用mysqli,并不能使你免疫。您必须使用mysqli的特性,例如准备好的语句,以避免sql注入。

票数 0
EN

Stack Overflow用户

发布于 2013-05-31 18:37:16

更有可能的是,错误不会出现在两种浏览器上,而且只会出现损坏的标记,并且它们正在以两种不同的方式修复它,一种是让标记可见,另一种则不是。如果没有看到代码,就无法确定地知道。

PROTIP

您可以在一个调用中从数据库中选择多个字段。

代码语言:javascript
复制
$res = mysqli_query($mysqli_connect,"
                    SELECT firstName, lastName 
                    FROM users
                    WHERE id = '".(int)$id."'
                    LIMIT 1");

if (!$res) die("Error running query at ".__FILE__." : ".__LINE__);

$person = mysqli_fetch_object($res);

echo $person->firstName; 
echo $person->lastName;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16863568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档