0

重複の可能性:
mysql_fetch_array() は、パラメーター 1 がリソースであると想定しており、select でブール値が指定されています

このコードを実行すると、次の 2 つのエラーが発生します。

<?php
include('config.php');
session_start();
$user_check=$_SESSION['login_user'];

$ses_sql=mysql_query("select username from admin where username='$user_check' ");

$row=mysql_fetch_array($ses_sql);

$login_session=$row['username'];

if(!isset($login_session))
{
header("Location: login.php");
}
?>

コードは希望どおりに実行されますが、次の 2 つのエラーが発生します。

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/jblanksb/public_html/lock.php on line 9

Warning: Cannot modify header information - headers already sent by (output started at /home/jblanksb/public_html/lock.php:9) in /home/jblanksb/public_html/lock.php on line 15

コードでエラーを非表示にしようとするとerror_reporting(0);機能しません。

4

3 に答える 3

3

この行の直後

$ses_sql=mysql_query("select username from admin where username='$user_check' ");

追加

echo(mysql_error());

実際に発生しているエラーが表示されます。現在エラーが発生しているため、ブール値である FALSE が返されます (出力が示すように)。クエリは正しいように見えるので、その値$user_checkを確認する必要があるかもしれません。

/home/jblanksb/public_html/lock.php:9 で開始されたヘッダーの問題の出力については、lock.php のその行に何かを出力していることは確かです。

http://php.net/manual/en/function.header.php

于 2012-04-20T19:15:02.380 に答える
1
  1. ob_start() を使用します。php タグの後の最初の行で、ヘッダーの問題が削除されます。
  2. mysql_query ブラケット書き込みの終了後.. die (mysql_error()); これにより、クエリエラーが発生します。これは $user_check が空白の場合だと思います。SQLクエリ(データベースチェック)の前にif(セッションチェック)を置くようにしてください。

これで問題は解決します。

ありがとう。

于 2012-04-20T19:29:16.117 に答える
0

問題は、mysql_query が失敗し、$ses_sql の値がfalseになることです (もちろんリソースではありません)。

mysql_query で問題を解決すると、エラー メッセージが表示されなくなり、コードによって別のページにリダイレクトされます。

mysql_error() を使用して、MySQL クエリの問題を特定します。

于 2012-04-20T19:03:15.613 に答える