Ошибка активной записи Codeigniter - PullRequest
0 голосов
/ 05 мая 2010

Я использую функцию get_where() в codeigniter и получаю ошибки mysql, в зависимости от того, что я установил предел и смещение, например, этот код,

$this->db->get_where('em_user', $whereArr, 30, 0)->num_rows()

возвращает ошибку MySQL, которая выглядит следующим образом,

Номер ошибки: 1064

У вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует ваша версия сервера MySQL для правильный синтаксис для использования рядом с "ГДЕ email = 'your@emailaddress.com' И password = 'letmein' LIMIT 1 'в строка 2

ВЫБРАТЬ * ГДЕ email = 'your@emailaddress.com' И password = «letmein» LIMIT 1

Однако, если я запускаю этот код,

$this->db->get_where('em_user', $whereArr, 30, 30)->num_rows()

кажется, что он работает нормально, он работает нормально, он не возвращает результатов, но я не получаю ошибку (я предполагаю, что нет результатов, потому что есть смещение 30, и в моей таблице только 2 записи) .

SQL, который создает этот код, выглядит следующим образом,

SELECT * FROM (`em_user`) WHERE `email` = 'your@emailaddress.com' AND `password` = 'letmein' LIMIT 30, 30

Я не понимаю, как ограничение в 1 в конце запроса может вызвать столько горя, может кто-нибудь просветить меня, пожалуйста?

Ответы [ 4 ]

0 голосов
/ 11 мая 2018
$this->db->select('*');
$this->db->from('em_user');
$this->db->where('email',$email);
$this->db->where('password',$password);
$this->db->limit('30');
$query=$this->db->get();
$result=$query->result();
0 голосов
/ 06 мая 2010

$this->db->get_where('em_user', $whereArr, 30, 30)->num_rows() не даст никаких результатов. num_rows () выдаст вам количество результатов.

0 голосов
/ 23 мая 2014

Я думаю, что эта ошибка не связана с вашей строкой кода

$this->db->get_where('em_user', $whereArr, 30, 0)->num_rows()

потому что в сообщении об ошибке появляется LIMIT 1, но в вашем коде вы ограничиваете 30

в любом случае вы можете попробовать эту строку вместо get_where

$this->db->where($whereArr)->limit(30,0)->get('em_user');

и обратите внимание, что эта строка вернет num строк, а не записей

Также вы можете просмотреть запрос, чтобы убедиться в его правильности или нет, добавив эту строку после get_where или запроса

die($this->db->last_query());
0 голосов
/ 05 мая 2010

Линия

SELECT * WHERE email = 'your@emailaddress.com' AND password = 'letmein' LIMIT 1

не имеет предложения FROM. Я предполагаю, что это должно быть:

SELECT * from em_user WHERE email = 'your@emailaddress.com' AND password = 'letmein' LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...