每当我将数据插入MySQL时,为什么会出现此错误?

时间:2014-02-26 02:46:54

标签: php mysql sql newline

每当我将整数值插入数据库时​​,我都会遇到此问题

<h1>A Database Error Occurred</h1>
        <p>Error Number: 1366</p><p>Incorrect integer value: '
11' for column 'code' at row 1</p><p>INSERT INTO `company`(`code`, `Name`) 
                             VALUES('\n11', 'John')

我的代码在一个范围内,我的名字是输入类型。有没有办法删除值中的\ n?

其他代码

function insert_new_name()
        {

        $code = $this->input->get('code');
        $name = $this->input->get('name');

        $sSQL = "SELECT * FROM company WHERE code = ? or Name = ? AND `show` = 1"  ;
        $result = $this->db->query($sSQL, array($code, $name));
            if($result->num_rows() != 0)
                {
                 return json_encode('error');
                }
            else
                {
                $sSQL = "INSERT INTO `company`(`code`, `Name`) 
                         VALUES(?, ?) ";
                $result = $this->db->query($sSQL, array($code, $name));
                $id = $this->db->insert_id();
                $sSQLdisplay = "SELECT * FROM Name where id = '$id' ";
                $resultdisplay = $this->db->query($sSQLdisplay);
                $data = array();
                $row = $resultdisplay->row();
                    $data[] = Array($row->id);
                    $data[] = Array($row->code);
                    $data[] = Array($row->Name);
                    $data[] = Array('');                        
                    $data[] = Array(''); 
                $resultdisplay->free_result();
                return json_encode($data);  
            }
        }   

4 个答案:

答案 0 :(得分:2)

看起来您正在尝试将字符串'\n11'插入需要整数的字段中。您需要从要插入的code值中删除非数字字符并将其解析为整数,以生成以下命令:

INSERT INTO `company`(`code`, `Name`) VALUES(11, 'John')

答案 1 :(得分:1)

使用trim()从该值中删除新行字符,然后再将其绑定到您的查询:

$code = trim($this->input->get('code'));

答案 2 :(得分:1)

对于整数值最佳选项是使用intval()来转换整数值

中的任何字符串或空值

$ code = intval($ this-&gt; input-&gt; get('code')); //你会得到0或更大,然后是0

示例:

  1. $ this-&gt; input-&gt; get('code')这个有值\ n11
    $ code = intval($ this-&gt; input-&gt; get('code')); // 11

  2. $ this-&gt; input-&gt; get('code')此值为abc11
    $ code = intval($ this-&gt; input-&gt; get('code')); // 11

  3. $ this-&gt; input-&gt; get('code')这个值为abc
    $ code = intval($ this-&gt; input-&gt; get('code')); // 0

答案 3 :(得分:0)

\n字段值中删除code个字符,code字段看起来像整数

INSERT INTO `company`(`code`, `Name`) 
                             VALUES('11', 'John')

请用户trim功能,

喜欢这个

$code = trim($this->input->get('code'), " \t\n\r\0\x0B");

OR

$code = trim($this->input->get('code'));