2011-07-25 10 views
0

私は完全にmysqlで動作するが、postgresqlに変換すると動作しない例があります。秘密のmysqlからpostgresqlのクエリ

のMySQLコード:(index.phpを):

<?php 
    require('includes/connection.php'); 
    include('func.php'); 
?> 
<html> 
<head> 
</head> 

<body> 
<p> 
<form action="" method="post"> 

    <select name="drop_1" id="drop_1"> 

     <option value="" selected="selected" disabled="disabled">Select a Category</option> 

     <?php getTierOne(); ?> 

    </select> 

</form> 

</body> 
</html> 

MySQLのコード(func.php):

function getTierOne() 
{  

     $result = mysql_query("SELECT DISTINCT tier_one FROM three_drops") 
or die(mysql_error()); 

    while($tier = mysql_fetch_array($result)) 

    { 
     echo '<option value="'.$tier['tier_one'].'">'.$tier['tier_one'].'</option>'; 
    } 
} 

PostgreSQLのコード:(index.phpを):

<?php 
    require('includes/connection.php'); 
    include('func.php'); 
?> 
<html> 
<head> 
</head> 

<body> 
<p> 
<form action="" method="post"> 

    <select name="drop_1" id="drop_1"> 

     <option value="" selected="selected" disabled="disabled">Select a Category</option> 

     <?php getTierOne(); ?> 

    </select> 

</form> 

</body> 
</html> 

PostgreSQLのコード(func.php):

function getTierOne() 
{  

     $sth = $dbh->query("SELECT DISTINCT tier_one FROM three_drops"); 

     while($tier = $sth->fetch()) 

     { 
      echo '<option value="'.$tier['tier_one'].'">'.$tier['tier_one'].'</option>'; 
     } 
} 

接続(PostgreSQLには):

接続が機能していますが、私はエラーを取得:(メンバ関数クエリに呼び出し)を非オブジェクト上に配置します。

+0

を初期化する必要がありますか?あなたはconnection.phpで何を持っていますか?多分、$ dbh-> queryをpg_queryで、$ sth-> fetchをpg_fetch_assoc($ sth)で置き換えてください。 –

+0

私は自分の質問を接続で更新します。私はあなたの提案をしようとするが、私は同じ結果を持っています:非オブジェクトのメンバ関数pg_query()を呼び出します。 – Sbml

答えて

1

$ dbhグローバルを定義してみてください。

connection.php:

require("constants.php"); 
global $dbh; 

func.php:今はないので、$のDBHオブジェクトはどこか

function getTierOne() 
{ 
    global $dbh; 
+0

Do not works、私は同じ問題を抱えています。関数の外側の行だけを選択してエコーすると、うまく動作しますが、選択ボックスの中で何も起こりません。 – Sbml

+1

ああ、申し訳ありません。グローバルな$ dbh;関数内にある必要があります。編集されました。 –

+0

ありがとうございました。 – Sbml