php - sqlsrv 将多个数组插入到 SQL Server 中是否有更好的方法?
问题描述
$params
为 SQL Server启用多个数组的更好方法是什么。当我尝试将数组组合到$params
时,出现网页无法正常工作的错误。需要向 SQL Server 添加 4 行单独的数据。该代码有效,但我想组合“$params”并将其余代码发送一次。
<?php
include_once '../dbcon1.php';
date_default_timezone_set('America/Phoenix');
$datetime_variable = new DateTime();
$datetime_formatted = date_format($datetime_variable, 'Y-m-d H:i:s');
$unitnumber = $_POST['unitnumber'];
$username = $_POST['userid'];
$pos1 = $_POST['pos1'];
$pos2 = $_POST['pos2'];
$pos3 = $_POST['pos3'];
$pos4 = $_POST['pos4'];
$depth1 = $_POST['depth1'];
$depth2 = $_POST['depth2'];
$depth3 = $_POST['depth3'];
$depth4 = $_POST['depth4'];
$pressure1 = $_POST['pressure1'];
$pressure2 = $_POST['pressure2'];
$pressure3 = $_POST['pressure3'];
$pressure4 = $_POST['pressure4'];
$sql = "
INSERT INTO [dbo].[tiresinspect]
([date],[username],[unitnumber],[tirelocation],[depth],[psi])
VALUES
(?,?,?,?,?,?)
";
$params1 = array($datetime_formatted, $username, $unitnumber, $pos1, $depth1, $pressure1);
$params2 = array($datetime_formatted, $username, $unitnumber, $pos2, $depth2, $pressure2);
$params3 = array($datetime_formatted, $username, $unitnumber, $pos3, $depth3, $pressure3);
$params4 = array($datetime_formatted, $username, $unitnumber, $pos4, $depth4, $pressure4);
$stmt1 = sqlsrv_query( $conn, $sql, $params1);
$stmt2 = sqlsrv_query( $conn, $sql, $params2);
$stmt3 = sqlsrv_query( $conn, $sql, $params3);
$stmt4 = sqlsrv_query( $conn, $sql, $params4);
if( $stmt1 === false ) {
die( print_r( sqlsrv_errors(), true));
}else{
}
if( $stmt2 === false ) {
die( print_r( sqlsrv_errors(), true));
}else{
}
if( $stmt3 === false ) {
die( print_r( sqlsrv_errors(), true));
}else{
}
if( $stmt4 === false ) {
die( print_r( sqlsrv_errors(), true));
}else{
header("Location: index.php?Submitted");
}
?>
还尝试以$params
这种方式组合并收到错误。
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -15 [code] => -15 [2] => 指定了参数 1 的无效方向。SQLSRV_PARAM_IN 、SQLSRV_PARAM_OUT 和 SQLSRV_PARAM_INOUT 是有效值。[message] => 指定了参数 1 的无效方向。SQLSRV_PARAM_IN、SQLSRV_PARAM_OUT 和 SQLSRV_PARAM_INOUT 是有效值。))
$params1 = array(array(
$datetime_formatted, $username, $unitnumber, $pos1,
$depth1, $pressure1),
array($datetime_formatted, $username, $unitnumber, $pos2,
$depth2, $pressure2),
array($datetime_formatted, $username, $unitnumber, $pos3,
$depth3, $pressure3),
array($datetime_formatted, $username, $unitnumber, $pos4,
$depth4, $pressure4));
解决方案
推荐阅读
- textmate - 如何在 TextMate(C 包)中禁用自动缩进?
- mongodb - MongoDB 3.6 版本的性能问题
- javascript - 如何对齐具有不同列数的两行
- react-native - 字体的 react-native 链接 - 仅链接字体
- python-3.x - Anaconda Navigator 1.9.7 - 环境 - 更新索引错误 - Ubuntu 16.04 LTS
- c# - 有没有办法在更新旋转时使相机围绕游戏对象运行?
- orm - ColdFusion ORMExecuteQuery ORM 缺少映射
- angular - 仅当 ng serve --prod 时出现 AngularFire 错误
- r - diag(XVX^T) 的紧凑/高效替代品?
- c# - 如何从 Unity 的实时数据库中获取数据库错误?