首页 > 解决方案 > 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));

标签: phparrayssql-serversqlsrv

解决方案


推荐阅读