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