gpt4 book ai didi

php - 从具有多类型元素 PHP 的数组插入 MySQL

转载 作者:行者123 更新时间:2023-11-29 06:01:07 24 4
gpt4 key购买 nike

我正在尝试从数组中插入数据。问题是当我内爆 数组时,int 值转换为字符串。有没有办法保留每个数组元素类型?

$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')

最佳答案

从我发布的链接中,使用 PDO 准备语句并在执行语句时链接值...

$valueString = implode(',', array_fill(0, count($insData), '?'));

$stmt = $bdd->prepare("INSERT INTO myTable VALUES ({$valueString})");
$stmt->execute(array_values($insData));

编辑:我认为你遇到的困难是你想在确保安全的同时保留类型。这将涉及仅将引号放在查询中的字符串字段周围,而不是数字字段。

您可以对数组进行循环并使用 is_string($value) 然后只引用这些字段。但这增加了很多复杂性和额外的处理。

关于php - 从具有多类型元素 PHP 的数组插入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com