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+ 中被删除。所以如果你的学习我会看mysqli
或PDO
。 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试图获取状态=某物的所有订单号并将订单号放入数组中的主要内容,如果未能解决你的问题,请参考以下文章