2011-06-24 5 views
0

ソーステーブルからいくつかのムービーデータを取得して新しいデータベース構造にインポートするクエリを実行しています。次に、mysql_fetch_objectを使って結果をループし、データを解析し、外部関数を呼び出して、ジャンル、アクターなどをデータベースの他のテーブルに追加します。mysql_fetch_object内でクエリを実行している間にエラーが発生しました

私が呼び出す関数の1つでは、同じデータベース内の別のテーブルにクエリを作成します。私はそのクエリで「有効でないMySQL-Linkリソース」を取得しています。

これに問題が発生する原因はありますか?

はここでエラーが発生している方法についていくつかのコードです:

function doThis($thing) { 
    mysql_query("SELECT derp FROM herp WHERE sherp = $thing",$db)or die(mysql_error()); 
} 

$query = mysql_query("SELECT foo FROM bar",$db); 
while($row = mysql_fetch_object($query)) { 
    doThis($row->awesome); 
} 

これは私がやっていると私はエラーを取得しています、その理由を知っていないもの、本質的です。

この処理中に2つのデータベースに接続していることがあります。データベースと私がインポートしているデータベースからデータを取得しています。

ありがとうございます!

+0

あなたのコード例は少しばかりです。あなたは 'function doThis($ row-> awesome);'を呼ぶのではなく 'doThis($ row-> awesome);'を呼び出します。 – Rihards

+0

あなたのクエリでエラーチェックをしていません - あなたのSQLのエラーのためにクラッシュする可能性がありますが、あなたはそれを見ることはありません。エラーを表示する方法の例については、[参考:mysql拡張機能を使用した完璧なコードサンプルとは何ですか?](http://stackoverflow.com/q/6198104)を参照してください。 –

+0

@Richardsキャッチをありがとう。関数は正常に呼び出しますが、エラーはクエリにあります。また、クエリにmysql_error()を追加しました。 – LeGrande

答えて

2

2つのこと:関数内でグローバル変数として$ dbを宣言していません(宣言されていないため、表示されているエラーが発生します)。次のように追加します。

global $db; 

次に、whileループ内からfunctionキーワードを削除します。それはPHPの暴落を引き起こす可能性が高いです。

+0

接続文字列がページの先頭にあり、変数$ dbを参照しています – LeGrande

+0

問題はありません、関数はデフォルトスコープの変数にアクセスすることはできません、あなたは変数にアクセスするために(クラスの外の)関数をグローバルにする必要があります –

+0

これは美しく働いています。しかし、私はこの大規模で複雑な輸入物を作る必要がなかったと思います。 – LeGrande

関連する問題