我试图第一次使用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);
            }



    });
 });


我用来访问数据库的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”内所有值的公司名称。这怎么可能?

最佳答案

SQL查询应为

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


这将返回该列表中带有CIK的所有公司名称。 IN参数接受逗号分隔的值列表。

在传递CIK数组方面,您可以更改Ajax请求以发送CIK的“ data”参数。

        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查询一起使用。

08-28 03:26