每当我将整数值插入数据库时,我都会遇到此问题
<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);
}
}
答案 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
示例:
$ this-&gt; input-&gt; get('code')这个有值\ n11
$ code = intval($ this-&gt; input-&gt; get('code')); // 11
$ this-&gt; input-&gt; get('code')此值为abc11
$ code = intval($ this-&gt; input-&gt; get('code')); // 11
$ 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'));