0

可能重复:
mysql_fetch_array() 期望参数 1 是资源,选择中给出的布尔值

运行此代码时出现两个错误:

<?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");
}
?>

代码按我想要的方式执行,但抛出了这两个错误:

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 为空白时,你会得到这个。尝试将 if(session checks ) 放在 sql query (db checks) 之前。

这将解决您的问题。

谢谢。

于 2012-04-20T19:29:16.117 回答
0

问题是您的 mysql_query 失败,这给 $ses_sql 值false(这当然不是资源)。

使用 mysql_query 解决问题将阻止错误消息,这将使您的代码将您重定向到另一个页面。

使用 mysql_error() 找出 MySQL 查询的问题所在。

于 2012-04-20T19:03:15.613 回答