PDO 将一个简单的数组插入 MySQL 数据库

Posted

技术标签:

【中文标题】PDO 将一个简单的数组插入 MySQL 数据库【英文标题】:PDO insert a simple array into MySQL database 【发布时间】:2016-05-28 04:45:28 【问题描述】:

我有一个表单,它允许用户在多个文本框中添加不同的问题名称,然后将它们传递给一个数组:

name="question_name[]

如何使用 PDO 和 mysql 将该数组插入到我的问题表中?我试过了:

$sql = "INSERT INTO questions (`question_name`) VALUES (:question_name)";
$stmt = $db->prepare($sql);
$stmt->bindValue(':question_name', $question_name);
$stmt->execute();

这给了我

数组到字符串的转换”错误。

我测试了print_r语句,结果如预期:

Array ( [0] => [Answer1] => [2] => [Answer2]) 

等等...取决于使用的文本框的数量。

我知道这与 BindValues / BindParam / execute() 语句有关,我只想要一个正确的方法和推理来帮助我学习。谢谢。

【问题讨论】:

:questions_name != :question_name @JayBlanchard 感谢现场,我已经改变了,同样的错误仍然存​​在 【参考方案1】:

简单的解决方案:

$sql = "INSERT INTO questions (`question_name`) VALUES (:question_name)";
// prepare a stamemnt only once
$stmt = $db->prepare($sql);
$stmt->bindParam(':question_name', $question_name);
// iterate over your POST[question_name] array
foreach ($_POST['question_name'] as $question_name) 
    $stmt->execute();

【讨论】:

这样一个简单的解决方案。真的不需要解释。谢谢! @YourCommonSense 那是bindValue 兄弟。进行第二次更改并设置bindParam 刚刚意识到我所做的编辑很愚蠢。不知道我在想什么,但似乎我完全心不在焉。我很抱歉。

以上是关于PDO 将一个简单的数组插入 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

JS数组到PHP并使用PDO更新MYSQL中的表

PDO 从表中提取一列到一维数组中

[PDO如果ID存在,则在更新时插入MySQL

将多个复选框插入 MySQL (PDO)

PHP PDO 事务?

PHP实现的pdo连接数据库并插入数据功能简单示例