Я перехожу из старых методов использования PHP MySQL mysql_fetch_array()
и т. Д., И я пытаюсь быть более дружественным, используя Database API в своих модулях.
Я просто хочу вернуть и распечатать значение. Например:
$query = db_query("SELECT zip FROM {zipcodes} WHERE city = :city LIMIT 1", array(":city" => $city));
Я знаю, что значение есть, я могу получить к нему доступ и распечатать его, используя традиционные методы вне API базы данных.
print $query->zip
не работает.
Документация по API ясна как грязь.
Может кто-нибудь сказать мне правильный способ доступа к этим значениям?
Есть ли хороший учебник, который кто-нибудь может порекомендовать?
Вот как использовать API базы данных в Drupal 7 без написания запроса MySQL:
источник
Вы должны зациклить свой запрос $, вы не можете предполагать, что у вас есть только один результат с вышеуказанным запросом.
Если вы знаете, что у вас есть только один результат, вы можете вызвать fetchObject для вашего запроса ->
print $ query-> zip должен затем дать вам то, что вы хотите.
источник
я бы сделал
если вы хотите ровно одну строку из набора результатов. В противном случае цикл с foreach является лучшим вариантом, как предлагалось ранее.
источник
Я знаю, что это старый, но вы можете и должны сделать:
источник
Ну, у вас есть способы сделать это правильно в Drupa 7:
db_select - в Drupal есть функция, которая возвращает объект, который вы создаете с его помощью SQL-запроса - https://api.drupal.org/api/drupal/includes%21database%21database.inc/function/db_select/7 . У вас есть метод для объекта под названием range. Вы можете использовать это.
Запрос поля сущности, представляющий собой класс, который создает запрос SQL на объектах: https://www.drupal.org/node/1343708 . Это также есть метод диапазона.
источник
Drupal 7
Используйте этот запрос для одного результата:
Вместо того, чтобы использовать это
потому что его генерируют предупреждение.
источник
Drupal 6
$query
будет вашим результатом Вам нужно извлечь значения из него, в вашем случае, если он выбирает только 1 строку и 1 столбец, т.е. zip, то получить напрямую$query->zip
не будет работать, так как $ query - это набор результатов, а не загруженный объект или массив. Так что это должно сделатьПримечание:
db_fetch_array
это еще один API для извлечения значений в формате массиваисточник