2012-02-21 12 views
1

可能性の重複:
PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean givenmysql_fetch_assoc()は、パラメータ1がリソースであることを期待し、ブール与えられたエラー

私は追加して、FacebookアプリIDを取得するためにPHPとMySQLプログラムをコーディングしていますし、私のリンクはhttp://freegiveaway.info/new/manageApp.php .btwです。データベースが正常に接続されています。

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, 
boolean given in /home/free/public_html/new/manageApp.php 

私のPHPは、私はラインしばらく($アプリケーション= mysql_fetch_assoc($アプリ)){

上のエラーを取得し、私のSQLファイルは、以下のコード

$flag = $_POST['flag']; 
     $key = $_POST['key']; 
     $secret = $_POST['secret']; 
     $deleteApp=$_POST['deleteApp']; 
     $appN=$_POST['appN']; 
    $db = mysql_connect("localhost", "free_1", "password"); 
    mysql_select_db("facefunv_chuck", $db);  
    $app = mysql_query("SELECT * FROM tsp ORDER BY n",$db); 
     while ($apps = mysql_fetch_assoc($app)){ 

をfollwing含まれています

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 

-- 
-- Database: `facefunv_chuck` 
-- 

-- -------------------------------------------------------- 

-- 
-- Table structure for table `tsp` 
-- 

CREATE TABLE IF NOT EXISTS `tsp` (
    `n` int(11) NOT NULL AUTO_INCREMENT, 
    `id` text NOT NULL, 
    `secret` text NOT NULL, 
    `restricted` int(11) NOT NULL, 
    `banned` int(11) NOT NULL, 
    PRIMARY KEY (`n`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=40 ; 

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
/*!40101 SET [email protected]_COLLATION_CONNECTION */; 
+0

mysql_queryが失敗した場合、リソースの代わりにブール値 'false'を返します。 mysql_error()を呼び出して何がうまくいかなかったかを知る。 – Basti

+0

whileの前に 'echo mysql_error()'を追加し、同様に投稿してください。そのするmysql_query関数は、私は、クエリが失敗し、このエラーを得たクエリ/ DB –

+0

と、おそらく何かを、適切な結果を返すされていないように見えます:いいえデータベースは、ユーザーのfree_1 '@ – vishnu

答えて

1

mysql_select_dbを使用してdb名を「auto」に変更しています。私は、テーブルtspを持つautoという名前のデータベースはないと思います。したがって、$ appの結果はnullで、nullでfetchを呼び出すことはできません。

+0

私は今コードを変更しましたが、まだノーデータベースエラー – vishnu

+0

ユーザー 'free_1'へのアクセスが拒否されました 'localhost' to database 'facefunv_chuck' – vishnu

+0

権限アクセスエラーのように見えます。 localhostをIPアドレス127.0.0.1に変更してみてください。そのユーザ(free_1)とlocalhostのmysql.userテーブルにエントリがありますか? Fyi localhostと127.0.0.1の機能がmysqlでアクセス可能です – Ray

1

mysql_query()はエラー時にFALSEを返します。したがって、クエリが失敗していて、まだその行をフェッチしようとしています。

は、最初の戻り値をチェックしてみてください。選択が成功し、そうでなければFALSE場合要するに

$app = mysql_query("SELECT * FROM tsp ORDER BY n",$db); 
if (!$app) { 
    die("Query failed: " . mysql_error()); 
} 

while (($apps = mysql_fetch_assoc($app)) !== false) { 
    //... 
} 
+0

私は、データベース「facefunv_chuck」から「localhost」のために拒否された – vishnu

+0

あなたのmysql_select_db呼び出しが失敗している可能性があります。 'if(!mysql_select_db( 'auto'、$ db)){die(mysql_error());を試してください。いいえデータベースが選択されていない...しかし、私は言ったように、私はデータベース – drew010

+0

はああ、私はエラーのアクセスは、ユーザのためにデータベースに「localhost」の「facefunv_chuck」 – vishnu

1

は、mysql_query()リソースを返します。あなたのコードでそのエラーをチェックする必要があります。

いくつかの理由が考えられますが、明白なのはデータベースに接続し、mysql_select_db()テーブルからデータを選択しようとするデータベースが「自動」であることです。あなたのダンプによると、データベースは実際には "auto"ではなく "facefunv_chuck"と呼ばれています。

+0

@「free_1」を否定してしまった私は、クエリが失敗し、このエラーを得ました答えは、 "auto"という名前のデータベースを選択していますが、ダンプはあなたのデータベースが実際に "facefunv_chuck"という名前であると言います。 – vishnu

+0

@JustinBiaberを選択:} ' –

+0

私はmysql_select_db( "facefunv_chuck"、$ db)に変更しました。 ..しかし、まだデータベースには、@データベース「facefunv_chuck」あなたは、データベースへのアクセスをユーザが「free_1」を付与する必要があり@JustinBiaber – vishnu

関連する問題