2012-04-10 10 views
0
<?php 
class Page { 
    function getPage($urlOfPage){ 
     $result = mysql_query('SELECT category, title FROM rs-planet WHERE url = "'. mysql_real_escape_string($urlOfPage)); 
     if(mysql_num_rows($result) === 0){ 
      header('HTTP/1.0 404 Not Found'); 
      exit; 
     } 
     else{ 
      return $page[] = mysql_fetch_array($result); 
     } 
    } 
} 

?> 

を与え、私はこのエラーを持っている:PHP:mysqlのクエリは、ブール

警告:はmysql_num_rows()は、パラメータ1がリソースであることを期待し、Cで指定したboolean :\ xamppの\ htdocsに\ RS-クラス\惑星\ライン上のpage.php 6

警告:は、mysql_fetch_array()は、パラメータ1はリソースであるとCに示す ブールを期待:ライン11 の\ XAMPP \ htdocsに\ RS-惑星クラス\ \ page.phpそして、私は問題を参照してください...

var_dump @ $ resultを実行すると、ブール値を取得します。 (もしそれが真実であるならば、それは私に偽を与える@それは私に虚偽を与えます)。

PS。私の悪い英語を申し訳ありません、私の主な言語はオランダ語です。

EDIT: のvar_dump(mysql_error)=

文字列(152)「あなたはあなたのSQL構文でエラーが発生している。 使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアル をチェック。

+1

'のvar_dump(mysql_error()); SQLクエリ内のURL文字列値の' – zerkms

+1

ませ決算引用符を...人々が自分のSQLクエリをデバッグする方法を学習しますと、場合でも、彼らはできません21世紀に入るように説得され、用意されたステートメントを使用してください –

+0

はい。準備されたステートメントは、SQLの神からの贈り物です - それを使用してください。 :) –

答えて

2

mysql_query falseを返すクエリが実行できない場合(つまり、不正な構文)の近くに「"1" 行目のインデックスは」バッククォートでrs-planetを取り巻く試してみてください。

$result = mysql_query('SELECT category, title FROM `rs-planet` WHERE url = "'. mysql_real_escape_string($urlOfPage) . '"'); 

私はテーブル名の-が構文をねじっていると思っています。

EDIT:PDOは、エラーメッセージを取得するためにmysql_error()を使用する必要がないため、これらの問題をデバッグする方がはるかに簡単です。PDOによってスローされるExceptionに含まれています。 http://php.net/manual/en/book.pdo.php

SECOND EDIT:実際に問題が見つからない可能性があります。私のコードは修正されましたが、他の回答を参照してください...

+0

クエリの構文がうまくいきません。クローズクォートがありません。 – dotancohen

+0

@citizenen実際には、他の回答に記載されているように、欠落している見積もりがおそらく問題になります。 –

+0

これは文字列を返します... –

1

mysql_query返信falseエラー

あなたはWHERE url="ですが、URL文字列の後ろには引用符はありません。

1

mysql_queryはエラー時にFALSEを返します。あなたのエラーはあなたのクエリで引用符を閉じていないということです。これを試してみてください:

 $result = mysql_query('SELECT category, title FROM rs-planet WHERE url = "'. mysql_real_escape_string($urlOfPage).'"'); 
+0

それは動作しません... –

+0

あなたはどのような結果を得ましたか? – dotancohen

+1

また、 'return $ page []'の代わりに 'return $ page'を試してください。前者は 'mysql_fetch_array'から配列を返し、後は' $ page'配列の最初の要素の 'mysql_fetch_array'から配列を返します。 – dotancohen

関連する問題