0

初めてpostgresを使おうとしています。testArrayという名前の配列内の値から値の会社名を取得したいです。

私が書いたajaxリクエストは

$(document).ready(function()
{

var testArray=[0001001871, 0001001843, 0001001853];



        $.ajax({
        type:'GET',
        url: 'php/databaseAccess.php',
        data: {'CIKs': testArray},
        success: function(success)
            {
            document.write(success);
            }



    });
 });

そして私がdbにアクセスするために使用したPHPファイルは

<?php
 $link = pg_connect("host=hostname dbname=dbNAme user=username password=password");
 if(!$link)
 {
 //echo "Connection cannot be established";
 exit;
  }

 else
 {
 $cik_array = $_GET['CIKs'];
 $safe_ciks = array();
 foreach($cik_array as $cik)
 {
$safe_ciks[] = pg_escape_string($cik);
}
$in_string = "'" . implode("','", $safe_ciks) . "'";

 $result = pg_exec($link, "select company_name from company_names where cik=".$in_string);

 if (!$result) {
 //echo "<br> Could not successfully run query from DB";
exit;
}

else
{
 echo "<br> Query Executed Successfully<br>";

 echo pg_result($result, 0);
 }
 }
 ?>

このコードは、cik 0001001807で会社名のみを出力します。単一のクエリ自体を使用して、配列「testArray」内のすべての値の会社名を取得したいと思います。これはどのように可能ですか。

4

1 に答える 1

2

SQL クエリは

SELECT 
    company_name
FROM
    company_names
WHERE
    cik= IN('0001001807','0001001843', '0001001853')

これにより、そのリストにある CIK を持つすべての会社名が返されます。IN パラメータは、カンマ区切りの値のリストを受け入れます。

CIK の配列を渡すという点では、Ajax リクエストの「データ」パラメーターを変更して CIK を送信できます。

        data: {'CIKs': testArray},

すべてのCIKをdatabaseAccess.phpに渡し、次のコマンドでアクセスできると思います

$cik_array = $_GET['CIKs'];
//escape the CIKs, to prevent SQL injection
$safe_ciks = array();
foreach($cik_array as $cik)
{
    $safe_ciks[] = pg_escape_string($cik);
}
//get the CIKs in a format compatible with the IN function
$in_string = "'" . implode("','", $safe_ciks) . "'";

これにより、上記の SQL クエリで使用できる $in_string が生成されます。

于 2012-06-18T05:05:45.227 に答える