PHP / SQL试图获取状态=某物的所有订单号并将订单号放入数组中

Posted

技术标签:

【中文标题】PHP / SQL试图获取状态=某物的所有订单号并将订单号放入数组中【英文标题】:PHP/SQL Trying to get all order numbers where status = something and put order number into array 【发布时间】:2017-12-02 03:10:24 【问题描述】:

我正在制作厨房显示屏。如果我知道订单号,它就可以工作。我正在尝试获取 status = "INQUEUE" 的所有订单号,并将这些数字放入一个数组中。目标是计算“INQUEUE”订单总数,并使屏幕上的段仅显示 arr[0]-Arr[4]。由于某种原因,这部分代码会导致错误。

    $status= "INQUEUE";    
    $arr    = array();
    $sql    = "select ORDID from HEADERS where CurrentStatus=$status";
    $result = mysql_query($sql) or die(mysql_error());  
    while( $row = mysql_fetch_assoc( $result ) ) 
      $arr[] = $row[ORDID];
    

我希望将所有状态为“INQUEUE”的订单号抓取到数组中,以便将订单显示为 arr[X]

【问题讨论】:

首先,mysql_* 系列函数在 php5.5 中已被弃用(或 5.6 无法记住),并在 PHP7+ 中被删除。所以如果你的学习我会看mysqliPDO。 PDO 是两者中的佼佼者,但需要更多的面向对象编程知识。并学习如何使用 PREPARED STATEMENTS 。这就是说ORDID 是什么,你拥有它的方式将被视为一个常数,你想要$row["ORDID"] 代替它。 附言。 PDO 将允许您将结果作为该列的数组获取。 $stmt->fetchAll(PDO::FETCH_COLUMN, 1) 如果我没记错的话。并允许您跳过循环。 【参考方案1】:

您收到的具体错误是什么?

查询中突出的一点是变量需要用单引号括起来,所以它看起来像这样:

$sql    = "select ORDID from HEADERS where CurrentStatus='$status'";

有时,当我处理动态构建的查询时,我喜欢回显查询字符串,以便准确了解它是如何发送到服务器的。

此外,在处理动态构建的 SQL 查询时,养成使用准备好的语句和参数化查询的习惯总是一个好主意。

另外,与 ArtisticPhoenix 一致,我建议移植到另一个库。最后,确保数组索引描述符用双引号括起来。这是您使用 mysqli 的代码:

$link = mysqli_connect("dbserver", "user", "password", "database");
$status= "INQUEUE";    
$arr    = array();
$sql    = "select ORDID from HEADERS where CurrentStatus='$status'";
$result = mysqli_query($link, $sql);  
while( $row = mysqli_fetch_assoc($result)) 
  $arr[] = $row["ORDID"];

【讨论】:

我能够使用 $result = $conn->query($sql);而不是 $result = mysql_query($sql) 或 die(mysql_error()); 有趣。我从来没有使用过'or die(MySQL_error());'之前的方法,所以我没有一个很好的答案。 它帮助展示了一些东西!我仍然没有在数组中捕获 ORDID。在将其插入数组时,我也尝试使用引号。 愚蠢的问题,但查询有效吗?您是否使用 MyPHPAdmin 或直接从 MySQL 服务器本身对数据库进行了尝试?我也同意 ArtisticPhoenix 使用不同的库。我对 mysqli 有很好的经验,很容易移植你的代码来使用它。 是的!它获取具有该状态的一个 ORDID。

以上是关于PHP / SQL试图获取状态=某物的所有订单号并将订单号放入数组中的主要内容,如果未能解决你的问题,请参考以下文章

php 从magento sql获取订单

MySQL中最新订单状态的SQL查询

SQL 反透视该行并获取订单号

Blade - 试图获取非对象的属性

sql sql获取magento 2中的所有销售订单备注

SQL 根据当前日期减去两天选择记录