-1

今天我犯了一个荒谬的错误,我用了半天的时间来找出这个。

下面的代码:

$conn = db_connect ( DBHOST, DBUSER, DBPASS, DBNAME );
$sql = "SELECT u.*, c.name FROM ost_user u, ost_company c WHERE u.id='" . $id . "' AND c.id=u.companyid;";
$query = db_query( $sql, DBNAME, $conn);
if (mysql_num_rows ( $query ) != 1) {
    die ( "User not found!" );
}
else
{
    $row = mysql_fetch_assoc($query);
    $_SESSION['username'] == $row['username'];
    $_SESSION['companyid'] == $row['companyid'];
}

所以问题很严重,

$_SESSION['username'] == $row['username'];
$_SESSION['companyid'] == $row['companyid'];

所以两个会话都保持 NULL 继续进行。

我将 php.ini 错误级别设置为 E_ALL,但它不会引发任何警告消息,但它不应该发生在 .NET/Java 平台上。

那么是我可以在 php.ini 上进行的任何设置,还是我可以强制执行该值应该有分配的地方?

4

3 回答 3

1

您突出显示的表达式是完全有效的:

$_SESSION['username'] == $row['username'];
$_SESSION['companyid'] == $row['companyid'];

如果你做了这样的事情:

$_SESSION['username'] == $row['username'];
$_SESSION['companyid'] p== $row['companyid'];

然后你会得到一个错误,因为它不是有效的代码。

编译器只能验证您的代码是否有效。它不知道您的意图,因此无法确定代码是否会按照您的意图执行。

于 2013-08-12T07:21:10.190 回答
1

您不会在此处遇到任何语法错误,并且如果您使用 double equals ,则不会分配值==。举这个例子

<?php

$car ='car';
$book ='book';
$car == $book;

echo $car; // Prints car , not book.
?>

当您使用该运算符时,一些流行的 IDE 会向您显示这一点。

计算表达式,但计算结果不在任何地方使用。这可能是由于错误地将 '=' 运算符替换为 '==' 导致的拼写错误。

此外,将其添加到您的 PHP 代码中(但在您的情况下不是必需的)

error_reporting(E_STRICT);
于 2013-08-12T07:19:39.603 回答
0

尝试将 php 的错误报告设置为 1:

http://php.about.com/od/troubleshooting/qt/php_error_reporting.htm

error_reporting(1);
于 2013-08-12T07:17:38.880 回答