[英]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.