Estou fazendo a transição dos métodos MySQL 'old school' do PHP mysql_fetch_array()
, etc., e estou tentando ser mais drupalizado usando a API do banco de dados em meus módulos.
Eu simplesmente quero retornar e imprimir um valor. Por exemplo:
$query = db_query("SELECT zip FROM {zipcodes} WHERE city = :city LIMIT 1", array(":city" => $city));
Sei que o valor existe, posso acessá-lo e imprimi-lo usando métodos tradicionais fora da API do banco de dados.
print $query->zip
não está funcionando.
A documentação da API é tão clara quanto a lama.
Alguém pode me dizer a maneira correta de acessar esses valores?
Existe um bom tutorial que alguém possa recomendar também?
Veja como usar a API do banco de dados no Drupal 7 sem escrever uma consulta MySQL:
fonte
Você precisa fazer um loop da sua consulta $, não é possível supor que você tenha apenas um resultado com a consulta fornecida acima.
Se você souber que possui apenas um resultado, poderá chamar fetchObject na sua consulta ->
print $ query-> zip deve então dar o que você deseja.
fonte
eu faria
se você deseja exatamente uma linha do conjunto de resultados. Caso contrário, fazer loop com foreach é a melhor opção, conforme sugerido anteriormente.
fonte
Sei que isso é antigo, mas você pode e deve fazer:
fonte
Bem, você tem maneiras de fazer isso corretamente na Drupa 7:
db_select - no Drupal, existe uma função que retorna um objeto que você constrói com ele a consulta SQL - https://api.drupal.org/api/drupal/includes%21database%21database.inc/function/db_select/7 . Você tem um método no objeto chamado range. você pode usar isso.
A consulta ao campo de entidade, que é uma classe que constrói uma consulta SQL, inclui: https://www.drupal.org/node/1343708 . Este também é o método range.
fonte
Drupal 7
Use esta consulta para um único resultado:
Em vez de usar isso
porque gera um aviso.
fonte
Drupal 6
$query
será o seu resultado Você precisa buscar valores a partir dele, no seu caso, se buscar apenas 1 linha e 1 coluna, ou seja, zip e, em seguida, obter diretamente$query->zip
não funcionará, pois $ query é o conjunto de resultados, não um objeto carregado ou uma matriz. Então isso deve fazerNota:
db_fetch_array
é outra API para buscar valores no formato de matrizfonte