gpt4 book ai didi

php - 如何将查询保存在多维数组中?

转载 作者:行者123 更新时间:2023-11-29 17:08:52 24 4
gpt4 key购买 nike

我每天都会将此脚本作为 cron 作业执行,以更新支付发票的剩余天数。我首先查询表的每一行,并尝试将数据存储在多维数组中,但这似乎将我查询的所有内容存储在数组的第一个元素中。

这是我的脚本:

<?php
include '../inc/dbinfo.inc';

ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "################################################# UpdateVendorInvoiceDays.php #################################################" );

$three = 3;

$fetchAllInvoices = "SELECT VENDORINVOICEID, VdrInvoiceReceived, PaymentDue, COUNT(*), DATEDIFF(PaymentDue, NOW()) FROM tblVendorInvoices WHERE VdrInvoiceStatusID != ?";
$getInvoices = $conn->prepare($fetchAllInvoices);
$getInvoices->bind_param("i", $three);
$getInvoices->execute();
$result = $getInvoices->get_result();

$rows = array();
$j = 0;

while($row = $result->fetch_assoc())
{
$rows[$j][] = $row;
$j++;
}

echo json_encode($rows[0][0]); //Only outputs one row

//UPDATE DAYS REMAINING IN EACH ENTRY THAT ISNT PAID
$updateDaysRemaining = "UPDATE tblVendorInvoices SET DaysRemaining = ? WHERE VENDORINVOICEID = ? AND VdrInvoiceStatusID ! = ?";
$setDays = $conn->prepare($updateDaysRemaining);

$k = 0; //incrementor
$numberOfEntries = $rows['COUNT(*)'];

for($k;$k<$numberOfEntries;$k++){
$setDays->bind_param("iii", $rows[$k]["DATEDIFF(PaymentDue, NOW())"],
$rows[$k]['VENDORINVOICEID'], $three);
if($setDays->execute()){
error_log('Cron success');
}else{
error_log('Cron fail');
}
}
?>

目前我的第一个查询的输出是:[[{"VENDORINVOICEID":88,"VdrInvoiceReceived":"2018-08-21","PaymentDue":"2018-07-27","COUNT(*)":2,"DATEDIFF(PaymentDue, NOW())":-25}]]

我的错误日志只通知我 $rows['COUNT(*)'] 未定义(这是有道理的)

我在这里查看了其他答案,但它们似乎没有与我相同的结构。

编辑:我的数据库中也有 2 行,但这只输出了一行。我忘了提到这一点。

最佳答案

有一些简化方法可以获取所有行。而不是...

while($row = $result->fetch_assoc())
{
$rows[$j][] = $row;
$j++;
}

echo json_encode($rows[0][0]);

您可以使用 fetch_all() 返回所有行...

$rows = $result->fetch_all (MYSQLI_ASSOC);
echo json_encode($rows);

然后对整个数组进行编码,而不仅仅是一个元素 - 这就是 $rows[0][0] 向您展示的内容。

至于您的其他问题 - 将您的 select 语句更改为

COUNT(*) as rowCount

然后您可以使用此别名作为字段引用...

$rows['COUNT(*)']

变成了

$rows['rowCount']

关于php - 如何将查询保存在多维数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51955033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com