【发布时间】:2017-06-28 18:08:17
【问题描述】:
我正在尝试从数组中插入数据。问题是当我 implode 数组时,int 值转换为 String。有没有办法保留每个数组元素类型?
$insData=array (
0 => string 'sds' (length=3)
1 => string 'dsds' (length=4)
2 => string '1251' (length=4)
3 => string 'jklj' (length=4)
4 => string 'jklj' (length=4)
5 => int 0
6 => string 'jkkj' (length=4)
7 => int 0
8 => int 0
9 => int 0
10 => int 0
11 => int 0
12 => int 0
13 => int 0
14 => int 0
15 => int 0
16 => int 0
17 => int 0
18 => int 0
19 => int 0
20 => int 0
21 => int 0
22 => int 0
23 => int 0
24 => int 0
25 => string '2017-06-28 10:06:24')
$escaped_values = array_map('mysql_real_escape_string',array_values($insData));
$values = implode(", ", $insData);
$sql1 = "INSERT INTO `myTable` VALUES ($values)";
var_dump($sql1);
=> INSERT INTO `myTable` VALUES (sds, dsds, 1251, jklj, jklj, 0, jkkj, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2017-06-28)
try {
$stmt1 = $bdd->prepare($sql1, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
$stmt1->execute();
$row1 = $stmt1->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT);
$stmt1 = null;
}
catch (PDOException $e){
print $e->getMessage();
}
我收到了 MySQl 错误。有没有办法解决这个问题:
INSERT INTO `myTable` VALUES ('sds', 'dsds', 1251, 'jklj', 'jklj', 0, 'jkkj', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '2017-06-28 10:06:24')
【问题讨论】:
-
有错误信息吗?如果有,它说明了什么?
-
在您的查询中缺少表
fields。 -
错误:SQLSTATE[42S22]:未找到列:1054 '字段列表'中的未知列 'sds'
-
你最好使用像 PDO 这样的东西,在那里你使用绑定变量,这意味着这些值无论如何都会保留它们的原始类型。 stackoverflow.com/questions/12019826/… 可能会有所帮助。
-
显示完整的
INSERT查询