如何将数组插入箱子?
我使用的是最新的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();
任何帮助都会很棒,谢谢
答案 0 :(得分:2)
要绑定任何非字符串参数,必须使用PDO bindValue()方法将所需类型作为第3个参数传入。例如:
$statement->bindValue(2, [1, 2], PDO::PARAM_ARRAY)
答案 1 :(得分:-1)
编辑:这是对给定错误的快速修复,而不是存储数组的方法。
您必须将数组显式转换为字符串。一种简单的方法:
$myString = "[" + implode(", ", $myArray) + "]";
这将为您提供字符串"[1, 2, 3, 4, 5]"
这是一个例子,但你明白了。
答案 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)