Задать вопрос
I_CaR
@I_CaR
программист в прошлом.

Как сделать запрос к БД по средствам Yii2 на php?

$config['components']['db'] = [
    'class' => 'yii\db\Connection',
	'driverName' => 'mysql',
    'dsn' => 'mysql:host=localhost;dbname=[db_name]',
    'username' => '[username]',
    'password' => '[password]',
    'charset' => 'utf8',
];
$config['params'] = [];
return $config;

$post = Yii::$app->db->createCommand('SELECT text FROM pictures WHERE id=356')
           ->queryOne();
print($post);

Тишина.

Сделал следующую попытку:
$rows = (new \yii\db\Query())
    ->select(['id', 'text'])
    ->from('pictures')
    ->where(['id' => '356'])
    //->limit(10)
    ->all();
print($rows);


И тоже тишина. Через обычные связки (php+MySQL) я выводил ошибки (сделать это могу, но опасаюсь SQL-инъекций), для понимания, а с Yii, второй день знаком.
Хотя бы как вывести ошибку - может БД не видит или ещё что-то?
Или сам запрос некорректен? Хочу получить просто текст из статьи для озвучки.
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой 10 комментариев
Пригласить эксперта
Ответы на вопрос 1
MLDevelop
@MLDevelop
Что касается код до слова "Тишина": это код взяли из конфига как есть? Если это действительно так, то выполнение запроса в
Yii::$app->db->createCommand('SELECT text FROM pictures WHERE id=356')
           ->queryOne();
не будет работать по нескольким причинам:
  1. Выполнение запроса после команды return $config;, потому этот код даже не выполнялся (оттого и тишина)
  2. Непосредственно в файлах конфигов не будут выполняться запросы, так как приложение еще не инициализировано. Для тестирования запросов - лучше использовать экшены в контроллерах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы