PHP / Mysql INSERT INTO内爆值

时间:2017-01-25 09:36:06

标签: php mysql

此代码应该多次插入同一行,但发送者字段中的$ myArray中存储了不同的值:

$sql = ("SELECT contacts FROM Users WHERE username = '$usernametmp' ");
$result = $conn->query($sql)->fetch(PDO::FETCH_COLUMN);
$myArray = explode(',', $result);
$sql = "INSERT INTO Messages (sender,username,timestamp,msgtype) VALUES (('" . implode("','",$myArray) . "'),'$usernametmp',(CURRENT_TIMESTAMP),'8')";

联系人的确存在,但我收到了这个错误:

Error: SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)

我认为我理解的错误是内爆会在同一列中的多个单元格中起作用,但有没有办法可以在不使用foreach的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

当您尝试一次插入多个值时,通常会发生这种情况。

您需要某种循环来插入多个值(foreach),并为每个新值循环所需的行数(,)(

e.g。

INSERT INTO myable (id, firstname, lastname, email) VALUES
(1, 'Tony', 'Guy', 'tony@example.com')
,(2, 'Jeff', 'Bloke', 'jeff@exmaple.com')

简单的方法是查看您通过对其进行转储而爆炸的数据,并查看结构和您正在处理的内容,然后使用它构建foreach