如何将数组插入箱子?

时间:2015-08-05 10:49:44

标签: php pdo crate

如何将数组插入箱子?

我使用的是最新的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 个答案:

答案 0 :(得分:2)

要绑定任何非字符串参数,必须使用PDO bindValue()方法将所需类型作为第3个参数传入。例如:

$statement->bindValue(2, [1, 2], PDO::PARAM_ARRAY)

答案 1 :(得分:-1)

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

您必须将数组显式转换为字符串。一种简单的方法:

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

这将为您提供字符串"[1, 2, 3, 4, 5]"

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

Documentation about implode

答案 2 :(得分:-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);

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

答案 3 :(得分:-3)

使用

$statement->bindValue(2, [1, 2], PDO::PARAM_ARRAY)