2016-04-10 11 views
1

配列でこのクエリの値を返すことで、配列でアクションを実行する方法を教えてください。クエリから値を取得し、配列として返します

$sql = mysql_query("SELECT username FROM `users`"); 
$row = mysql_fetch_array($sql); 

コードはどのようにして次のようになりますか?ここで、user1とuser2は、上記のクエリから選択されたユーザーのユーザー名です。

$userarray = []; 

foreach($row as $single) 
{ 
    array_push($userarray, $single['username']); 
} 

をして、this MySQLi Classを使用しようとすることができた場合、それはあなたがデータベースから欲しいものを得ることは非常に簡単です:

$userarray = array("user1","user2"); 
+1

1)クエリを実行する必要があります。2)おそらくwhileループでデータを取得する必要があります – Rizier123

答えて

1

私がベストプラクティスを指摘する前に、まず作業コードが必要です。だから私はまずあなたに簡単な解決策を教えます。

mysql拡張機能を使用してクエリを実行するには、関数がmysql_queryである必要があります。クエリテキストを直接mysql_fetch_arrayに渡すことはできません。次にmysql_fetch_arrayは、あなたが思っていることをしません。 mysql_fetch_arrayは、mysql_fetch_rowとmysql_fetch_assocの機能を組み合わせて、結果のカラムのキー名と数値インデックスを保存します。 mysql_fetch_array関数は、クエリのすべての行を含む配列を返しません。クエリからすべての行を取得するには、そのようなループでは、mysql_fetch_arrayを実行する必要があります。

$sql = "SELECT username FROM `users`"; 
$result = mysql_query($sql); 
if(!$result){echo mysql_error();exit;} 
$rows=array(); 
while($row = mysql_fetch_array($result)) 
{ 
    $rows[]=$row; 
} 
print_r($rows); 

【0035】次に、PHPでのMySQLの拡張はもはや維持されているためmysql_ *関数はdeprecatedされないことに注意します。これはMySQLデータベースが廃止されたことを意味するものではなく、PHPのmysqlという名前のデータベースアダプタが、古くて新しいアダプタ(mysqliPDOなど)を代わりに使用する必要があることを意味します。

次の点では、短いタグをphp.iniの設定で無効にすることができますので、短いタグの影響を受けないエコー防止のために常に<?php ... ?>または<?= ... ?>のいずれかを使用してください。

いくつかのmysqliまたはPDOの簡単な例を読んで、どちらかを始めることをお勧めします。 mysqli拡張はMySQLに特化していますが、PDO(PHP Data Objects)はいくつかの種類のデータベースを統一的に扱うための汎用アダプタとして設計されています。あなたの選択をして、廃止予定のmysql_ *関数を使用しないように切り替えます。

0

あなたはそれを行うにはforeachループを使用する必要があります。

$db  = new MysqliDb ('host', 'username', 'password', 'databaseName'); 
$userarray = $db->getValue('users', 'username', null); 
関連する問題