簡體   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