繁体   English   中英

PHP在Chrome中运行,但在Firefox中不运行

[英]PHP working in chrome but not in firefox

我下面的代码在chrome上工作正常,但是当我尝试在Firefox上加载它时说:“注意:尝试在第23行的* /loginTrueFunctions.php中获取非对象的属性”

这些是“问题代码”:

$firstName = $sqlObjectFirstName->firstName;

和:

$lastName = $sqlObjectLastName->lastName;

PHP代码:

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不会给出错误或结果。

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

var_dump($_SESSION); var_dump($_COOKIE); 

看看

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

要提到的另一件事是, 切勿直接将用户数据传递到查询中,因为您容易受到sql注入攻击。 仅仅因为您正在使用mysqli,并不能使您免疫。 您必须使用mysqli的功能(如准备好的语句)来避免sql注入。

然后很可能在两个浏览器上都不会出现该错误,并且标记损坏了,并且它们以两种不同的方式修复该标记,一种使标记可见,而另一种则看不到。 没有看到代码,就无法确定。

专家提示

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

$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;

将将这些数据从浏览器发布到php脚本的代码,很可能是由于浏览器,您要提交给服务器的数据有所不同。

此外,代码在哪里显示如何在php端调用数据?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM