2011-06-28 3 views
1

複数のクエリで同じmysqlリソースを使用できますか?mysqlのリンクリソースが低温化中

$queries=array($q1, $q2); 
$link=mysql_connect(...); 
mysql_select_db(...); 

for($i = 0; $i < count($queries); $i++) { 

     echo "Link is of type " . gettype($link) . "<br />"; 

     if(is_resource($link)) { 
      mysql_query($queries[$i], $link); 
     } else { 
      echo "Did not execute query. <br/>"; 
     } 
} 

disconnect($link); 

出力:

link is of type resource 
Successfully executed query 
link is of type resource 
Did not execute query. 

編集:私は最初のクエリが実行されることを出力から指摘したかったが、2番目にはありません。その間に、リンクに変更はありません。どのようにクエリを実行するかは重要ではありません(IMHO)。

EDIT 2:以下の私の正確なコード:

$link = mysql_connect("localhost", ........); 
mysql_select_db(....); 

for ($row = 0; $row < $numRows; $row++) { 
    if (($query = buildQuery($mainArr, $rowArr, $row)) === null) { 
     echo "Error - could not build query. <br />"; 
     return; 
    } 

    echo "Link is of type " . gettype($link) . "<br />"; 

    if (is_resource($link)) { 
     if ((mysql_query($query, $link))) { 
      if($debug) { 
       echo "Successfully executed query <br />"; 
      } 
     } else { 
      if ($debug) { 
       echo "This comes up when row is " . $row . "<br />"; 
       echo "Link is of type " . gettype($link) . "<br />"; 
       echo "Datawrite failed - " . $query . "<br />"; 
       echo "the official line is " . mysql_error($link) . "<br />"; 
      } 
     } 
    } else { 
     echo "Did not execute query <br />"; 
    } 
} 

disconnect($link); 
+0

2番目のクエリの結果はどうなりますか? –

+4

forループで$ querriesのスペルが間違っています。 $クエリでなければなりません。 –

+0

あなたはmysqlリソースを参照していますか? '$リンク'? – Dirk

答えて

2

forループの各繰り返しには、buildQuery()(ここには示していません)の呼び出しが含まれています。それは何らかの方法で$ linkに影響するか$ debugの値を変更しますか?

また、ループは$ numRowsを参照していますが、ここでは定義されていません。ループは何回実行されますか?

+0

2回実行します。 buildQueryの中には、$ linkへの参照があります。 $ linkがその関数の中で定義されていれば、なぜこれは$ linkを変更するのですか? – BlackSheep

+0

@BlackSheep:リソースは他の変数のようには動作しません。これらは、ファイル、イメージキャンバス、または(この場合は)データベース接続の識別子です。リソースは永続的であるため、リソース識別子に対する操作はリソースにグローバルに影響します。 –

+0

クール。ありがとう! =) – BlackSheep

2

あなたのスペルミスあなたのforループで$querries。それは$queriesである必要があります。

+0

+1これは間違いなく問題の一部です。 –

+0

申し訳ありませんが、これは一例です。これは私の実際のコードではありません。 – BlackSheep

+0

この例ではこれを修正しました。私が言ったように、これは私のコードを単純化したものです。 – BlackSheep

関連する問題