我的PHP / PDO查询仅在返回9时返回7条记录

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (38)

我有一个Web应用程序查询Oracle数据库中没有X,Y的ID,我正在使用Jquery和PHP API,我将一个ID列表传递给PHP来查询数据库,并返回更多信息记录,所以我可以geoCode他们。出于某种原因,我的代码会跳过第一个和最后一个记录,只返回9个中的7个。

在SQL Developer中,My SQL查询返回9条记录,这是正确的。我的JavaScript,我的数组(theIDS)有我正在选择的9条记录IDS,这些与我在SQL Developer中使用的相同。

我的PHP页面处理数组并返回9.跳过第一个和最后一个。

在SQL Developer中,My SQL查询返回9条记录,这是正确的。

SELECT ID, M_ADD1,M_CITY,M_STATE FROM CI_Data
  WHERE ID IN
('1129','135','158','306','325','397','630','755','776');

我的JavaScript代码:

var theIDS = ["1129", "135", "158", "306", "325", "397", "630", "755", "776"];

var phpIDS = theIDS.join();

// My AJAX call to the PHP to pass the array and return the records.
    $.ajax({ url : "forgeocode.php",
        type       : 'POST',                                             
    data       : {'data': JSON.stringify(phpIDS)},
    success    : function(result){
        console.log(result.length + "   Records");
        console.log(result);

        for (var i = 0; i < result.length; i++) {
                        console.log(result[i][0]+ " ID Number");
                        console.log(result[i][1]);
                         console.log(i);
        }
    }
});

我的PHP页面获取POST并查询记录

$db = new PDO('oci:dbname=//myDBName:1521/infrastructuregisdev', 'Acct', 'Pwd');;

$arrData= $_POST['data'];
$arr = explode(",",$arrData);
$in  = str_repeat('?,', count($arr) - 1) . '?';
$sql = "SELECT ID, M_ADD1,M_CITY,M_STATE FROM CIGIS.CI_DATA WHERE ID IN ($in)";
$stm = $db->prepare($sql);
$stm->execute($arr);
$data = $stm->fetchAll();

header('content-type: application/json');
echo json_encode($data);

我需要所有9条记录,不确定它是否是使用PDO的PHP页面。为什么它会跳过第一个和最后一个记录?

提问于
用户回答回答于

您在JavaScript中将字符串作为JSON发送,因此您需要json_decode()在PHP中使用。

$arrData= json_decode($_POST['data']);

如果你不这样做,有双引号$arrData。在你爆炸之后,第一个值是'"1129',最后一个是'776"'。这些与表中的ID不匹配。

但是,首先不需要将字符串转换为JSON。实际上,甚至没有必要将数组转换为字符串。只需发送数组,它就会被正确编码。在JavaScript中使用它:

    data       : {'data': theIDS},

$arr = $_POST['data'];

用PHP。

扫码关注云+社区

领取腾讯云代金券