2011-07-12 14 views
1

テーブルから選択し、すべての値を取得して配列に入れ、関数を返して別のファイルで呼び出し、別の関数を呼び出して配列値を渡して配列をループします。おかげどのようにデータベースから選択し、関数の配列に値を格納するのですか?

<?php 
function getusers() 
{ 
//db parameters here  
mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error()); 
mysql_select_db($dbname) or die("MySQL Error: " . mysql_error()); 
$query = "SELECT user_name FROM userinfo"; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 

    return $final[] = $row['user_name']; 
}  
    mysql_Close ($conn); 
} 
?> 

はgetusers()の配列を返し、私は

include('usernames.php'); 
getusers(); 
while!(end of [$final] array) 
{ 
    getTax($final[]); 
    } 

    function getTax($final) 
    { 
    //statement here 
    } 

答えて

2
function getusers() 
{ 
    //db parameters here  
    mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error()); 
    mysql_select_db($dbname) or die("MySQL Error: " . mysql_error()); 
    $query = "SELECT user_name FROM userinfo"; 
    $result = mysql_query($query); 
    $return = array(); 
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
    $return [] = $row['user_name']; 
    }  
mysql_Close ($conn); 
return $return; 
} 

そして、他のファイルに別のファイルでそれを呼び出す:

$final = getusers(); 
foreach ($final as $user) { 
    /*do what you want*/ 
} 
+0

感謝を。このエラーが発生しました。「getusers()を再宣言できません。 – karto

+0

関数getusers()が何度も宣言されています。コードを確認してください。 – Ostin

0

現在お使いのgetusers()機能が正しくない

あなたはそうのようなユーザーの配列を返すために、あなたのgetusers()機能を調整することができます:

function getusers() { 
    //db parameters here  
    mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error()); 
    mysql_select_db($dbname) or die("MySQL Error: " . mysql_error()); 
    $query = "SELECT user_name FROM userinfo"; 
    $result = mysql_query($query); 
    $users = array(); 
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
     $users[] = $row['user_name']; 
    } 
    mysql_Close($conn); 
    return $users; 
} 

し、別のファイルに、あなたはこれを含めることができます。

include('usernames.php'); 
$users = getusers(); 

foreach($users as $user) { 
    getTax($user); 
} 

function getTax($user) { 
    // do something with $user here 
    echo $user; // prints the username 
} 
+0

「getusers()を再宣言できません」というエラーメッセージが表示されます。 – karto

0

まず、私はことを言うために強い感じ特にPDOStatement::fetchAllがあなたの望むものの大半を占めているので、PDOを使用する必要があります。 This tutorialは比較的まともです。

は、ここで再書き込みのビットだが、それはあなたがそれを望むすべて行います:第二のファイルで

// let yourself cache the connection. That will save you processing time 
function getusers($connection, $dbname = DB_NAME) 
{ 
    if(!$connection) 
    { 
     return FALSE; // we can't do anything here. 
    } 
    // Selecting a db inside of a function can cause problems for others using 
    // your code (if you use $connection as a parameter). Instead explicitly 
    // use the database 
    $query = "SELECT user_name FROM `$dbname`.`userinfo`"; 
    // you may want to make this cause a return of something other than FALSE, 
    // but you definitely want a way to have some form of early escape here. 
    $result = mysql_query($query, $connection) or return FALSE; 
    $final = array(); 
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     // append the current user_name to the $final array 
     $final[] = $row['user_name']; 
    } 
    // you'll need to close the connection elsewhere. 
    return $final; 
} 

include('usernames.php'); 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
$users = getusers($conn, $dbname) or die("MySQL Error: " . mysql_error()); 
// foreach... as... will loop through your array automatically. 
foreach($users as $user) 
{ 
    // $user refers to each user_name fetched in getusers 
    getTax($user, $connection, $dbname); 
} 

// and here is where the cost saving of caching your connection is found: 
function getTax($user, $connection, $dbname = DB_NAME) 
{ 
    if(!$connection) 
    { 
     return FALSE; // we can't do anything here. 
    } 
    $result = mysql_query("SELECT * FROM TAX_TABLE WHERE USER_NAME = '$user'", 
          $connection) or return FALSE; 
    // continue as normal 
} 
+0

ありがとう:今すぐ試して – karto

関連する問題