2016-08-11 6 views
1

Microsoft SQL Server 2008 R2に入力する必要がある340個のフィールドを含む大きなHTMLフォームがあります。私は、PHPコード($ sql & $ params)の各変数を細心の注意を払って書くことなくデータを入力する方法を見つけようとしています。おそらく列と変数が同じ名前を持っている可能性があります。ここには、HTMLフォームの小さなバージョンとPHPコード全体があります。現在、SQLテーブルには「日付」&「PartNumber」という列しかありません。PHPを使用して340のHTMLフィールドをMS SQLデータベースに挿入する効率的な方法

HTMLコード:

<!DOCTYPE html> 
<html> 

<head> 
    <title>Form</title> 
</head> 

<body> 
    <form id="test" action="http://10.0.0.252/test.php" method="post" accept-charset="ISO-8859-1"> 
    <input type="text" tabindex="1" id="form283_1" value="" data-objref="61 0 R" title="Date:" name="Date" /> 
    <input type="text" tabindex="4" id="form339_1" value="" data-objref="62 0 R" title="PartNo." name="PartNo" /> 
    <input type="submit" value="Submit" id="form366_1"> 
    </form> 

</body> 

</html> 

PHPコード: - >テーブルのフィールド名、それを反復

<?php 

$post = file_get_contents('php://input'); 
$serverName = "FILESERV1\SQLEXPRESS"; 
$connectionInfo = array(
    "UID" => "user", 
    "PWD" => "Password", 
    "Database" => "ipadforms" 
); 

$conn = sqlsrv_connect($serverName, $connectionInfo); 

if ($conn === false) die("<pre>".print_r(sqlsrv_errors(), true)); 
echo "Successfully connected!"; 

if(empty($_POST) === false && empty($errors)=== true) 
{ 
    $sql = "INSERT INTO dbo.MF001 (Date,PartNumber) VALUES (?,?)"; 
    $params = array($post); 

    $stmt = sqlsrv_query($conn, $sql , $params); 
    if($stmt === false) { 
    die(print_r(sqlsrv_errors(), true)); 
    } 
    sqlsrv_close($conn); 
} 
+1

340のフィールドは、DateとPartNoの複数のインスタンスか、それらはすべて異なるものですか? –

+0

フィールド出力が異なります。フィールドの範囲は、ラジオボタンから、チェックボックス、テキストまでです。 –

答えて

0

は、フォームフィールド名の配列をお持ちですか?

$fields = array('formfield1' => 'dbfield1', 'formfield2' => 'dbfield2', etc...); 

foreach($fields as $formfield => $dbfield) { 
    $sql = "INSERT INTO dbo.FM001 ($dbfield) VALUES (?)"; 
    $stmt = $dbh->prepare($sql); 
    $stmt->execute(array($_POST[$formfield)); 
} 

プレースホルダ値のみではなく、SQLキーワードや識別子を表すことができるので$dbfieldは、直接クエリ文字列に補間する必要があることに注意してください。

+0

私はそのコードスニペットを試みましたが、 "$ stmt = $ dbh-> prepare($ sql);"エラーをスローする: "未定義の変数"& "ヌルのメンバー関数prepare()を呼び出す"。何のために "$ dbh"? –

+0

これは単なる例で、この場合はPDOを使用しています。代わりにsqlsrv _ *()関数を調整する必要があります。 –

+0

今は動作しますが、dbfield1をrow1に、dbfield2をrow2に挿入します。 –

関連する問題