0

ページはこちら:http ://www.arkmediainc.com/ark20test/ark20test/portfolio.php

$result = mysql_query(
    "SELECT * FROM foliobro WHERE itemid >= ".$startid." LIMIT 9"
);

while($row = mysql_fetch_array($result))
{

     $itemid = $row['itemid'];
     $thumb_desc = $row['thumb_desc'];
     $title = $row['title'];
     $category = $row['category'];
     ...
}

このエラーコードが表示されます:

Warning: mysql_fetch_array() expects parameter 1 to be resource, 
boolean given in /home/arkmedia/public_html/ark20test/ark20test/portfolio.php 
on line 49

49行目は実際にはそのwhile($row = mysql_fetch_array($result))行です。

次の9つの結果を取得しようとしています(idは1-11から、将来の拡張で)1-9、または10-11+クエリが正しく実行されていない可能性があるため、クエリの何が問題になっていますか。クエリはphpMyAdminから直接取得されたため、機能しない理由がわかりません。

4

3 に答える 3

3

コードを次のように変更します。

$result = mysql_query("SELECT * FROM foliobro WHERE itemid >= ".$startid." LIMIT 9");

if (!$result) {
    die(mysql_error());
}

クエリが失敗し、無効な結果を に渡していますmysql_fetch_array

右側のサイドバーで質問が重複していないか確認してください。

于 2012-07-24T02:54:51.987 に答える
1

PHPドキュメントから:

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning 
resultset, mysql_query() returns a resource on success, or FALSE on error.

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc,
mysql_query() returns TRUE on success or FALSE on error.

The returned result resource should be passed to mysql_fetch_array(), and
other functions for dealing with result tables, to access the returned data.

Use mysql_num_rows() to find out how many rows were returned for a SELECT
statement or mysql_affected_rows() to find out how many rows were affected 
by a DELETE, INSERT, REPLACE, or UPDATE statement.

mysql_query() will also fail and return FALSE if the user does not have 
permission to access the table(s) referenced by the query.

したがって、エラーが発生すると false が返されます。SQL エラーである可能性がありますが、クエリの単純さを考えるとそうは思えないので、権限が適切に設定されていることを確認してください。

余談ですが、mysql_* は使用せず、PDO または mysqli を使用してください。mysql_* は非推奨です。

于 2012-07-24T02:57:07.793 に答える
0

詳細情報がなければ、クエリを実行している時点で変数が空であると推測さ$startidれます-それまたはテーブル名をタイプミスしました。

これを実行します:

$sql = "SELECT * FROM foliobro WHERE itemid >= ".$startid." LIMIT 9;";
echo $sql;
$result = mysql_query($sql);

クエリの実行時に変数が定義されているかどうか、または空でないかどうかを確認します

于 2012-07-24T02:56:54.767 に答える