私は「古い学校」から移行していますPHP MySQLのmysql_fetch_array()
を使用するメソッドなどです。モジュールでデータベースAPIを使用することで、よりDrupallyにしようとしています。
単に値を返して出力したいだけです。例えば:
$query = db_query("SELECT Zip FROM {zipcodes} WHERE city = :city LIMIT 1", array(":city" => $city));
価値があることはわかっています。データベースAPIの外部で従来の方法を使用してアクセスし、印刷できます。
print $query->Zip
動かない。
APIドキュメントは、泥と同じくらい明確です。
誰かがこれらの値にアクセスする正しい方法を教えてもらえますか?
誰もがお勧めできる良いチュートリアルはありますか?
結果を1つだけフェッチしたい場合は、 fetchField をdb_query
とともに使用して、結果をフェッチできます。例:
$Zip_code = db_query("SELECT Zip from {zipcodes} WHERE city = :city LIMIT 1", array(":city" => $city))->fetchField();
また、従来のPHP(mysql_fetch_object
)コーディングのメソッドと同様の fetchObject() などのオプションを使用して、クエリの返された結果ソースから取得した値をフェッチすることもできます。結果を使用して取得します。
MySQLクエリを記述せずにDrupal 7でDatabase APIを使用する方法は次のとおりです。
$query = db_select('zipcodes', 'z')
->fields('z', array('Zip'))
->condition('z.city', $city)
->range(0, 1)
->execute();
$result = $query->fetchObject();
print $result->Zip;
$ queryをループする必要があります。上記のクエリで1つの結果しか得られないとは限りません。
foreach ($query as $row) {
print $row->Zip;
}
結果が1つしかないことがわかっている場合は、クエリでfetchObjectを呼び出すことができます->
$query = db_query("select Zip from {zipcodes} where city = :city limit 1", array(":city" => $city))->fetchObject();
print $ query-> Zipを実行すると、必要なものが得られます。
私はするだろう
$row = (object)db_query('Your SQL here')->fetchAssoc();
結果セットから正確に1行が必要な場合。それ以外の場合は、前に提案したように、foreachでループするのが最良のオプションです。
私はこれが古いことを知っていますが、できるし、すべきです:
$Zip_code = db_select('zipcodes', 'z')
->fields('z', array(
'Zip'
))
->condition('city', $city)
->range(0, 1)
->execute()
->fetchField();
Drupa 7でこれを適切に行う方法が必要です。
db_select-in Drupal彼と一緒に構築したオブジェクトをSQLクエリで返す関数があります- https://api.drupal.org/api/drupal/includes% 21database%21database.inc/function/db_select/7 。rangeというオブジェクトにメソッドがあり、それを使用できます。
エンティティに対してSQLクエリを作成するクラスであるエンティティフィールドクエリ: https://www.drupal.org/node/1343708 。これにはrangeメソッドもあります。
Drupal 7
このクエリを単一の結果に使用:
$Zip_code = db_query("SELECT Zip from {zipcodes} WHERE city = :city", array(":city" => $city))->fetchField();
これを使う代わりに
$Zip_code = db_query("SELECT Zip from {zipcodes} WHERE city = :city LIMIT 1", array(":city" => $city))->fetchField();
警告を生成するためです。