0

sitemap.xml ファイルを作成し、データベースからすべてのブランドを取得しようとしています。私は次のコードを持っています:

<?php
header("Content-type: text/xml");
echo'<?xml version=\'1.0\' encoding=\'UTF-8\'?>';
echo'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';

include 'includes/modules/connections/db.php'; //database connection
$brands = mysql_query("SELECT * FROM brands WHERE brand_status = 1"); //Select all brands
$row_brands = mysql_fetch_assoc($brands);

do { ?>
<url>
<?php
//Check when brand pages was last time updated 
$brand_update = mysql_query("SELECT * FROM user_history WHERE brand_id = ".$row_brands['brand_id']." ORDER BY uh_date DESC");
$row_brand_update = mysql_fetch_assoc($brand_update)
?>
    <loc>http://www.example.com/brand/<? echo $row_brands['brand_url']; ?>/</loc>
    <lastmod><?php echo $row_brand_update['uh_date']; ?></lastmod>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
</url>
<?php } while ($row_brands = mysql_fetch_assoc($brands)); ?> 
</urlset>

ただし、以下のエラーが発生します。多くの変更を試みましたが、常に別のエラーが発生します。上記のコードに問題があり、以下のエラーが発生することはありますか?

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<br/>
<b>Warning</b>
: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
<b>
/hermes/bosoraweb060/b2763/ipg.example/sitemap-brands.php
</b>
on line
<b>8</b>
<br/>
<url>
<br/>
<b>Warning</b>
: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
<b>
/hermes/bosoraweb060/b2763/ipg.example/sitemap-brands.php
</b>
on line
<b>15</b>
<br/>
<loc>http://www.example.com/brand//</loc>
<lastmod/>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<br/>
<b>Warning</b>
: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
<b>
/hermes/bosoraweb060/b2763/ipg.example/sitemap-brands.php
</b>
on line
<b>22</b>
<br/>
</urlset>

どうもありがとう!

4

1 に答える 1

-2

mysql_以外の何かに切り替えてください!mysqlとintertoobzwilpwn ur w3bs1te、srslyを使い続けます。そうは言っても、私はあなたがそれを尋ねた文脈であなたの質問に答えます。

HTMLをアンタングルすると、最初のエラーメッセージは次のようになります。

警告:mysql_fetch_assoc():指定された引数は8行目の/hermes/bosoraweb060/b2763/ipg.example/sitemap-brands.phpの有効なMySQL結果リソースではありません

コードの8行目を見ると、その関数に渡される引数が1つしかないことがわかります。その引数は、コードの次の行によって生成されました。

 $brands = mysql_query("SELECT * FROM brands WHERE brand_status = 1"); 

したがって、$brandsmysql_queryから取り戻そうとしているこのことは良くありません(有効なMySQL結果リソースではありません)。

何が間違っている可能性がありますか?SELECTステートメントが失敗しました。

これは、データベースにテーブルが含まれていないか、データベースにテーブルがbrands含まれてbrandsいるがそのテーブルにbrand_status列がないことが原因である可能性があります。

また、クエリを実行する前にmysql_select_db( "database")を呼び出す必要があることが原因である可能性もあります。これを見てください: http ://www.php.net/manual/en/function.mysql-select-db.php

mysql_query()を呼び出した直後に、次の行が含まれるようにコードを調整する必要があります。これにより、プログラムはPHPだけでなくMySQL自体からのエラーメッセージを表示するので、SELECTで何が問題になっているのかを把握できます。

if (0 != mysql_errno()) { 
  echo mysql_errno() . ": " . mysql_error(). "<br/>\n";
  exit ("MySQLfailure.<br/>\n");
}

これは、すべてのクエリの直後に配置して、本番コードに残すことができます。

于 2012-09-01T17:37:33.960 に答える