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) . "'";

这将产生 $in_string,它可以与上面的 SQL 查询一起使用。

于 2012-06-18T05:05:45.227 回答