2011-07-19 6 views
0

私が使用しているコミュニティビルダーでは、eval()を使ってPHPブロックを解析する必要があります。 evalでmysql_queryを使用できますか?このeval()内のデータベースから情報を呼び出すにはどうすればいいですか?ここでeval()でmysql_queryを実行できますか?

は、これまでの私のコードです:

$iProId = $this->oProfileGen->_iProfileID; 
$sCat = mysql_query("SELECT genres from Profiles WHERE ID = ". $iProId); 
print_r($sCat); 

これは私を与える:
リソースID#167

+0

、正確に、あなたがこれを行う必要があるのはなぜ? ['eval'](http://stackoverflow.com/questions/951373/when-is-eval-evil-in-php)と値を直接クエリ文字列に補間することは、潜在的に大きなセキュリティホールです。どちらのテクニックよりも、通常、より安全で、パフォーマンスが高く、保守性の高い方法があります。 SQL文の場合は、[prepared statements](http://php.net/PDO.prepared-statements)を使用します(PDOなどのMySQL拡張機能に切り替えることを意味します)。 PHPの作成者は、「eval()が答えの場合、間違った質問をしていることは間違いありません」 – outis

答えて

0

mysql_fetch_arrayを見て(と他のmysql_fetch_*機能)を持っているあなたを取得する方法についてリソースからのデータ。

2

eval'dをyesにしたときにその結果が得られれば、evalでmysql_queryを使うことができます。残りの質問は、その結果セットをどう使うべきかということになります。結果セット内のすべての行をループする

$iProId = $this->oProfileGen->_iProfileID; 
$sCat = mysql_query("SELECT genres from Profiles WHERE ID = ". $iProId); 
while($row = mysql_fetch_assoc($sCat)) { 
    print_r($row); 
} 

:私は何かを示唆しているような場合には

。もっと知りたいのであれば、PHPのウェブサイトには、mysql_ *関数の使い方に関するすべての記事があります。

0

eval()でクエリを使用すると私には奇妙に聞こえますが、コードは正しく機能しています。 mysql_queryはmysqlリソースを返します。次に、あなたが好きそれを読むためにmysql_fetch_row、あなたmysql_fetch_arrayに必要な、またはmysql_fetch_assoc

$iProId = $this->oProfileGen->_iProfileID; 
$result = mysql_query("SELECT genres from Profiles WHERE ID = ". $iProId); 
$sCat = mysql_fetch_assoc($result); 
print_r($sCat); 
関連する問題