-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 に答える