将数组存储在 MySQL 中的多行中
Store an array in multiple rows in MySQL
我只是想使用 MySQL 数据库将数组存储在多行中。不幸的是,它只保存最后一个值。
<?php
session_start();
require_once "../phpquery/dbconnection.php";
$testings = $_POST["testings"];
$presid = $_POST["presid"];
$lab_status = "0";
$patient_status = "1";
$update_status = "0";
foreach( $testings as $testing) {
if($stmt = mysqli_prepare($con,"INSERT INTO testing_schedule
(p_id,pres_id,testing_perform,submit_date,
lab_status,patient_status,update_status)
VALUES ( ?,?, ?, ?, ?,?,?)")){
$cur_date = date('Y-m-d');
mysqli_stmt_bind_param($stmt, "sssssss",
$_SESSION['p_id'],
$presid ,
$testing,
$cur_date,
$lab_status,
$patient_status,
$update_status);
echo "Successfully saved";
} else{
echo "ERROR: Could not prepare query: $con. " . mysqli_error($con);
}
}
?>
使用 printr() 的图像:
你应该这样做:
• 首先,prepare
语句 一次, 和 ?
占位符,就像您现在所做的那样。分别准备您需要的每条声明。
• 现在,在开始循环之前,BEGIN TRANSACTION
。
• 接下来,遍历循环,每次都使用正确的占位符值执行准备好的语句。
• 最后,COMMIT
。
• 现在,使用try{}
块来catch
循环期间可能出现的任何错误。如果发生这种情况,ROLLBACK
事务而不是提交它。
"SQL 事务",如此处所示,使整个更新 原子化。 没有人会看到更改 而 你正在制作它们。相反,当您提交时,他们会看到整个更改“立即”发生。然而,如果交易被回滚,“什么都没有发生”。 (另外,在大多数系统中,事务使这些操作相当更有效率......)
我只是想使用 MySQL 数据库将数组存储在多行中。不幸的是,它只保存最后一个值。
<?php
session_start();
require_once "../phpquery/dbconnection.php";
$testings = $_POST["testings"];
$presid = $_POST["presid"];
$lab_status = "0";
$patient_status = "1";
$update_status = "0";
foreach( $testings as $testing) {
if($stmt = mysqli_prepare($con,"INSERT INTO testing_schedule
(p_id,pres_id,testing_perform,submit_date,
lab_status,patient_status,update_status)
VALUES ( ?,?, ?, ?, ?,?,?)")){
$cur_date = date('Y-m-d');
mysqli_stmt_bind_param($stmt, "sssssss",
$_SESSION['p_id'],
$presid ,
$testing,
$cur_date,
$lab_status,
$patient_status,
$update_status);
echo "Successfully saved";
} else{
echo "ERROR: Could not prepare query: $con. " . mysqli_error($con);
}
}
?>
使用 printr() 的图像:
你应该这样做:
• 首先,prepare
语句 一次, 和 ?
占位符,就像您现在所做的那样。分别准备您需要的每条声明。
• 现在,在开始循环之前,BEGIN TRANSACTION
。
• 接下来,遍历循环,每次都使用正确的占位符值执行准备好的语句。
• 最后,COMMIT
。
• 现在,使用try{}
块来catch
循环期间可能出现的任何错误。如果发生这种情况,ROLLBACK
事务而不是提交它。
"SQL 事务",如此处所示,使整个更新 原子化。 没有人会看到更改 而 你正在制作它们。相反,当您提交时,他们会看到整个更改“立即”发生。然而,如果交易被回滚,“什么都没有发生”。 (另外,在大多数系统中,事务使这些操作相当更有效率......)