Регистр в запросе: select работает, SELECT не работает

TheGP

Новичок
Регистр в запросе: select работает, SELECT не работает

Собственно сабж. Запросы идут напрямую через функции php для работы в mysql (query()...)
Как такое может быть?

-~{}~ 16.07.10 01:38:

Ой, сорри, не напрямую) а в ней пропуск только запросов с маленькой буквы тк программист даже не догадывался что запрос нужно форматировать немного.

Бойтесь тупых программистов...


P.S. можно закрывать
 

prolis

Новичок
Ну и привели бы код той функции, которая парсит sql перед выполнением. Очень интересно на цель посмотреть.
 

TheGP

Новичок
Автор оригинала: prolis
Ну и привели бы код той функции, которая парсит sql перед выполнением. Очень интересно на цель посмотреть.
PHP:
public function query($query) {
    if (preg_match("(^insert|delete|update|replace|drop)", trim($query))) {
        $this->dbresults = @mysql_query($query, $this->dbconnect);
        $this->dbaffectedrows = @mysql_affected_rows($this->dbconnect);
        if ($this->dbresults) {

            $lastInsertId = mysql_insert_id();
            $this->free_result($this->dbresults);
            // if INSERT query return last_insert_id
            if ($lastInsertId) {
                return $lastInsertId;
            } else {
                return $this->dbaffectedrows;
            }
        }else{
            $this->free_result($this->dbresults);
            $this->error('',TRUE,TRUE);
        }
    }elseif (preg_match("(^select|show|describe|explain)", trim($query))) {
        $this->dbresults = @mysql_query($query, $this->dbconnect);
        $this->dbnumberrows = $this->num_rows($this->dbresults);
        return $this->dbresults;
    }else{
        $this->error('Неверный запрос SQL.',TRUE,TRUE);
    }
}
 

dimagolov

Новичок
круто. возвращаем или число или ресурс. причем число может быть как кол-вом строк, так и вставленным ID. все очень интуитивно понятно.
 

prolis

Новичок
Спасибо:)
Действительно, лучше не показывать, а то вдруг новоявленные оборачиватели db-запросов скопипастят.

Я подозреваю, внутрення функция num_rows($dbresults) сама фетчит весь результат. Если это так, замените её на mysql_num_rows($dbresults).
 

dimagolov

Новичок
prolis, еще доставляет передача свойства в параметре метода:
PHP:
$this->num_rows($this->dbresults)
 

С.

Продвинутый новичок
Автор оригинала: dimagolov
круто. возвращаем или число или ресурс. причем число может быть как кол-вом строк, так и вставленным ID. все очень интуитивно понятно.
Да ладно придираться. Как будто ты к моменту возвращения результата уже забыто, вставление было или обновление. Работающий вариант.
 

dimagolov

Новичок
С., а зачем вообще такой интеллект с определением типа запроса? ведь мы и так знаем, какой результат исполнения запроса смотреть в том коде, где вызываем запрос.
 

С.

Продвинутый новичок
$new_id= query("INSERT INTO ....");

Нормальный начальный подход к абстракции. Смотрится чище, интуитивнее и инкапсулярнее по сравнению с:

query("INSERT INTO ....");
$new_id= mysql_insert_id();
 

TheGP

Новичок
Автор оригинала: iceman
> preg_match("(^select|show|describe|explain)", trim($query)
чо за идиотизм?
Скажу по секрету тот программист весь фронтенд сайта написал в одном файле, причем код смешанный немного с html и js а шаблоны (smarty) с js и php ;) Причем выбор отображаемой страницы шел через if/elseif по всему файлу :)
 

Вурдалак

Продвинутый новичок
Ещё одна явная ошибка в паттерне: там признак начала строки задан только для INSERT и SELECT, остальные могут случайно в запросе оказаться.
 

weregod

unserializer
Re: Регистр в запросе: select работает, SELECT не работает

Автор оригинала: TheGP
Бойтесь тупых программистов...
не путайте тупых с неопытными
приведённый код не говорит о тупости
 

iceman

говнокодер
weregod
говорит о гениальности, я бы до такого в жизни не додумался ))
 

TheGP

Новичок
Re: Re: Регистр в запросе: select работает, SELECT не работает

Автор оригинала: weregod
не путайте тупых с неопытными
приведённый код не говорит о тупости
я был на эмоциях тогда:)
 
Сверху