gpt4 book ai didi

php - 如何将多个数组放入一个数据库表

转载 作者:行者123 更新时间:2023-11-29 01:40:14 28 4
gpt4 key购买 nike

0我有三个数组...示例:

phonenums
[0] 555-5555
[1] 555-4444
[2] 555-3333

types
[0] cell
[1] home
[2] work

notes
[0] a note
[1] the babysitters name
[2] call before 6pm

它们来自动态添加输入的表单,因此行数是任意的。

我想使用 PHP 将这些数组放入 MySQL 中的一个表中

Table name: customerphones
id
customer_id
phone
type
notes

我可以很好地将任何单个数组放入数据库中,但是,当涉及到将所有三个数组放入彼此协调时(例如:每一行 [0] 都在数据库表的一行中)... .我卡住了!我一直在不同的循环或诸如此类的地方重写它,但每次都出错。

如果它有助于进一步解释我的情况,我可以发布我的代码。不过,我只是在这里寻找一个“概念”,为我指明正确的方向。

我应该以某种方式组合数组吗?还是将它们放入循环中?我不知道!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~

这是我提出的解决方案(根据要求)。我敢肯定它根本不实用......而且可能有更好的方法来做到这一点。但它得到了我想要的结果。

// ~~~ Get variables from the form submitted
$phonenums = $_POST["phone"];
$types = $_POST["type"];
$notes = $_POST["notes"];

// ~~~ Queries for Inserting Customer Phone Numbers
$querynum = "INSERT INTO customerphones";
$querynum .= "(customer_id, phone)";
$querynum .= "VALUES (?, ?)";
$stmtnum = mysqli_prepare($db, $querynum);

$queryty = "UPDATE customerphones SET ";
$queryty .= "type = ? ";
$queryty .= "WHERE customer_id = ? AND phone = ?";
$stmtty = mysqli_prepare($db, $queryty);

$queryno = "UPDATE customerphones SET ";
$queryno .= "notes = ? ";
$queryno .= "WHERE customer_id = ? AND phone = ?";
$stmtno = mysqli_prepare($db, $queryno);

// Loops for executing the queries to insert phone numbers
// (I scraped this together b/c I couldn't get other methods to work...Change this later)
$n = 0;
foreach($phonenums as $rowph) {
mysqli_stmt_bind_param($stmtnum, 'is', $custid, $rowph);
mysqli_execute($stmtnum);
$rct = 0;
foreach($types as $rowty) {
if($rct == 0) {
$x = $types[$n];
mysqli_stmt_bind_param($stmtty, 'sis', $x, $custid, $rowph);
mysqli_execute($stmtty);
$rct++;
}
} // End Update Phone Type
$rct = 0;
foreach($notes as $rowno) {
if($rct == 0) {
$x = $notes[$n];
mysqli_stmt_bind_param($stmtno, 'sis', $x, $custid, $rowph);
mysqli_execute($stmtno);
$rct++;
}
} // End Update Phone Notes
$n++;
} // End foreach loops

最佳答案

好吧,我要在这里黑暗中拍摄。

PDO 与 PreparedStatements、MultipleIteratorArrayIterator 一起使用:

$dbh = new PDO("mysql:host=localhost;dbname=YOUR_DATABASE;", "root", "");
$sth = $dbh->prepare("INSERT INTO customerphones(phone, type, notes) VALUES(:phone, :type, :note)");
$m = new MultipleIterator();
$m->attachIterator(new ArrayIterator($phonenums), 'phones');
$m->attachIterator(new ArrayIterator($types), 'types');
$m->attachIterator(new ArrayIterator($notes), 'notes');
foreach($m as $row){
$sth->bindParam(":phone", $row[0]);
$sth->bindParam(":type", $row[1]);
$sth->bindParam(":note", $row[2]);
$sth->execute();
}

我假设您使用的是本地 MySQL 服务器,并且您服务器的根帐户没有密码保护。

它是这样工作的:

  • 使用一些参数创建一个新的 PDO 连接;
  • 为插入准备一个带有一些占位符的语句;
  • 创建一个迭代器来联合数组;
  • 将所有数组附加到迭代器;
  • 遍历迭代器的所有迭代:每次迭代都返回一个包含电话号码、类型和注释的数组;
  • 将当前迭代的所有元素绑定(bind)到语句的占位符上,然后执行。

但是请发布您用于连接到数据库的内容,然后我将重构我的答案。

关于php - 如何将多个数组放入一个数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392074/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com