0

如何将数组插入板条箱?

我正在使用最新的 Crate-PDO,但一直收到此通知

注意:第 610 行 .../Crate/PDO/PDOStatement.php 中的数组到字符串转换

第 118 行 .../myPdoClass.php 中的数组到字符串转换

我正在使用这段代码:

$myArray = ['1', '2', '3', '4', '5'];

$db = new Database;
$db->Query("insert into tbl (id, arrayCol) values (?,?)");
$db->bind(1, '1');
$db->bind(2, $myArray); 
$db->execute();

任何帮助都会很棒,谢谢

4

4 回答 4

2

要绑定任何非字符串参数,您必须使用传递所需类型作为第三个参数的 PDO bindValue() 方法。例子:

$statement->bindValue(2, [1, 2], PDO::PARAM_ARRAY)
于 2015-08-05T11:27:56.000 回答
-1

我没有与 Crate 合作过,但我会做这样的事情:

$myArray = ['1', '2', '3', '4', '5'];
$myArrayEncoded = json_encode($myArray);

$db = new Database;
$db->Query("insert into tbl (id, arrayCol) values (?,?)");
$db->bind(1, '1');
$db->bind(2, $myArrayEncoded); 
$db->execute();

当您稍后从数据库中检索它并希望将其恢复为第一行时,您可以对其进行解码:

$myArrayDecoded = json_decode($myArrayEncoded);

也许实际使用它的人有更好的解决方案,但我很确定,这也应该有效!

于 2015-08-05T11:01:58.133 回答
-1

编辑:这是对给定错误的快速修复,而不是存储数组的方法。

您必须将数组显式转换为字符串。一个简单的方法来做到这一点:

$myString = "[" + implode(", ", $myArray) + "]";

那会给你字符串"[1, 2, 3, 4, 5]"

这是一个例子,但你明白了。

关于内爆的文档

于 2015-08-05T10:59:48.110 回答
-3

利用

$statement->bindValue(2, [1, 2], PDO::PARAM_ARRAY)
于 2015-08-05T11:46:04.233 回答