2013-03-30 3 views
0

В этот момент я получить доступ к моей должности, как этотCodeIgniter SQL ошибка запроса обработки

http://localhost/post/174565/ 

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

http://localhost/post/1745s65/ 

Я получаю ошибку

Error Number: 1054 
Unknown column '1745s65' in 'where clause' 
SELECT * FROM posts WHERE id = 1745s65; 
Filename: D:\Localhost\Apache\htdocs\code\system\database\DB_driver.php 
Line Number: 330 

Я понимаю, почему он существует, но как его обрабатывать? Например, моим пользователям не нужно видеть SQL-запрос, и я хочу показать им 404 страницу вместо этого блока.

+0

напишите свой код, который запрашивает db на основе URL-адреса. –

+0

для чего это необходимо? пост не касается отладки sql-запроса, а обработки ошибок :) – MyMomSaysIamSpecial

+1

, чтобы увидеть, как вы анализируете запрос. Обычно, если вы правильно использовали активную запись, вы не должны видеть вышеуказанную ошибку. –

ответ

1

Попробуйте этот код:

public function getPostData($iPostId) { 
    $sqlQuery = $this->db->get_where('posts', array('id' => $iPostId)); 
    $aResult = $sqlQuery->result(); 

    if (empty($aResult)) { 
     show_404(); 
    } 
    else { 
     return $aResult[0]; 
    } 
} 
+0

Magic method ! Работает отлично. – MyMomSaysIamSpecial

0

Вам необходимо проверить вход пользователя, чтобы предотвратить возникновение проблем. Во всяком случае, Codeigniter имеет две предустановленные среды: разработку и разработку. Проверьте свой корневой индекс index.php для получения дополнительной информации.

+0

Я думал о проверке is_numeric и если результат SQL пуст, то есть некоторые встроенные функции :) Производственная среда ничего не меняет в этой ситуации – MyMomSaysIamSpecial

2

использование execptions:

try{ 
     //here what you need to do with script 
     } catch (Exception $e) { 
      var_dump($e->getMessage()); 
      show_404(); 
       } 

я думаю, что вы можете попробовать и поставить:

$database['db_debug'] = FALSE; в config/database.php, если вы хотите, чтобы удалить ошибки базы данных от того,

Смежные вопросы