получение данных из mysql, начиная со специального символа с помощью idiorm

Я пытаюсь получить последние 30 записей из базы данных MySQL с помощью idiorm. Одна ячейка содержит только «/ question» или «/ info», и на моей странице php эти строки не отображаются. Я просто повторяю записи. В phpmyadmin они хранятся, но idiorm отказывается их запрашивать.

Есть идеи? Спасибо

1

Решение

Кажется, работает, хотя. Я создал некоторые данные, соответствующие вашему запросу:

create table users (
id int not null auto_increment,
username varchar(255),
primary key(id)
);
insert into users set username = 'john';
insert into users set username = 'mike';

create table messages (
id int not null auto_increment,
user_id int,
message varchar(255),
time int,
primary key(id),
key(time)
);
insert into messages set user_id = 1, message = 'hello world', time = 10;
insert into messages set user_id = 2, message = '/question', time = 20;

Затем в PHP:

$messages = ORM::for_table('messages')
->join('users', array('users.id', '=', 'messages.user_id'))
->select('username')
->select('time')
->select('message')
->order_by_asc('time')
->limit(30)
->find_many();

foreach ($messages as $m) {
print "[$m->username] [$m->time] [$m->message]\n";
}

который дал ожидаемый результат:

[john] [10] [hello world]
[mike] [20] [/question]

Возможно, есть причины, не связанные с / персонаж. Возможно, записи в message неверный внешний ключ (плохой user_id значение).

Один из способов отладки это установить

ORM::configure('logging', true);

который позволяет увидеть последний выполненный запрос к БД:

var_dump(ORM::get_last_query());

В нашем случае это печатает:

SELECT `username`, `time`, `message` FROM `messages` JOIN `users` ON `users`.`id` = `messages`.`user_id` ORDER BY `time` ASC LIMIT 30
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]