我有一个将数据插入sql的use函数。数据是
function mysql_insert($table, $arr){
if($arr!=''){
$values = array_map('mysql_real_escape_string', array_values($arr));
$keys = array_keys($arr);
$q=('INSERT INTO `'.$table.'` (`'.implode('`,`', $keys).'`) VALUES ('''.implode(''',''', $values).''')');
//$res = mysql_query($q)OR die(mysql_error());
return $q;
}else{
return false;
}
数据和查询来自:
if($crud=='insert'){
$field= array( 'col1' => 'apel',
'c0l2' => 'box1',
'col3' => 200,//integer Quantity
);
$data=mysql_insert('wh',$field);}echo json_encode($data);
结果是="插入wh
(col1
、c0l2
、col3
)值('pel'、'box1'、'200')"col3的值为字符串。我需要那个col3作为整数。这个代码怎么了?
在以下代码中:
implode(''',''', $values)
内爆是将值数组转换为字符串,用','
分隔每个值
在内爆代码之前和之后,还有引号,它将用'
包装所有值,使其看起来所有值都是字符串
但是就像octerrn一样,我不明白为什么查询会失败,即使你用'
包装整数值,如果在数据库中选择了正确的数据类型,它应该可以正常工作
如果您仍然想在字符串周围使用quates,而不是在整数或布尔值周围尝试php函数json_encode()示例如下:http://codepad.org/Hpvzjnjc
之所以会发生这种情况,是因为命令implode(''',''', $values)
告诉它将数组$values
变成一个字符串,每个元素之间都有单引号和逗号。如果你不想在数字周围加引号,你需要用一个更具体的函数迭代$values。
然而,这其实并不重要。如果您给MySQL一个字符串,其中包含一个数字字段的数字,它只会将其转换为适当类型的数字。你可以保持原样,一切都应该正常。