我有这个功能:
//get mgs by orderID
function getOrderMsgs($orderId){
global $conn;
$query = "SELECT * ";
$query .= "FROM msgs ";
$query .= "WHERE orderid=" . $orderId . " ";
$msgset = mysqli_query($conn, $query);
confirm_query($msgset);
while ($msg = mysqli_fetch_assoc($msgset)){
$return[] = $msg;
}
return $return;
}
这将返回具有特定消息 ID 的所有消息。现在我需要做的是检查返回的值是否确实是一个数组,因为在查询之后,我们可能找不到具有该特定 ID 的消息,我相信这些消息不会返回数组。到目前为止,这就是我所拥有的:
$msgId = sql_prep($_GET['oid']);
$order = getOrderById($msgId);
$msgs=getOrderMsgs($msgId);
echo '<h2>Order #'.$order['orderid'].': '.$order['title'].'</h2>';
echo '<h3>Message thread</h3>';
foreach($msgs as $msg){
echo $msg['msg'].'<br>'.$msg['sender'].'<br>'.$msg['timestamp'].'<br><br>';
}
如果 db 中没有具有该 id 的消息,它会返回错误。
要查看变量的类型,您可以使用gettype
print_r(gettype($_COOKIE));
确保在使用前初始化$return
。这可确保您始终返回数组。
function getOrderMsgs($orderId){
global $conn;
$return = array(); // initialize variable
$query = "SELECT * ";
$query .= "FROM msgs ";
$query .= "WHERE orderid=" . $orderId . " ";
$msgset = mysqli_query($conn, $query);
confirm_query($msgset);
while ($msg = mysqli_fetch_assoc($msgset)){
$return[] = $msg;
}
return $return;
}
然后,在代码中,可以检查数组并使用数组元素的数量来决定下一步要执行的操作。
$order = getOrderById($msgId);
if(count($order) > 0) {
// Found something
} else {
// Nothing found
}