我有这个功能:
//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的消息,则返回错误。
答案 0 :(得分:0)
要查看变量的类型,您可以使用gettype
print_r(gettype($_COOKIE));
答案 1 :(得分:0)
确保在使用之前初始化$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
}