2013-03-30 72 views
0

在这个时刻访问我的帖子是这样笨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

发布您的代码,基于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

魔法!完美的作品。 – 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,如果你想从删除数据库错误显示为