【发布时间】:2020-06-22 16:58:50
【问题描述】:
需要在 MySQL 数据库上运行查询以查找特定的记录集。然后创建一个 while 循环将记录发送到 Web 服务。代码正在运行,但我发现了一些问题。
即使使用mysqli_fetch_assoc 存储行,是否还需要设置额外的数组?我的代码中出现的语法 $array = array(); 和 $array[] = $row; 并不总是返回较大结果集的所有行,但是当省略这些行时,它会返回它应该返回的所有行。
有人可以向我解释一下吗?我在另一个论坛上找到了这个示例,只是想了解如果mysqli_fetch_assoc 已经在这样做,为什么该行再次设置为数组?或者确保我的查询返回每一行然后在while循环中发送到Web服务的正确方法是什么
$query = mysqli_query($conn, "SELECT *
FROM `table`.`list`
WHERE `list`.`last_local_call_time` >= DATE_SUB(NOW(),INTERVAL 12 HOUR)
AND `list`.`list_id` = '5005'
AND `list`.`vendor_lead_code` = 'test'");
// set array
$array = array();
// look through query
while($row = mysqli_fetch_assoc($query)){
// add each row returned into an array
$array[] = $row;
//payload
$row['phone_number'] = preg_replace('/^27/', '0', $row['phone_number']);
$data_json = '{
"LeadDetails": [
{
"Attribute": "Phone",
"Value": "'.$row['phone_number'].'"
},
{
"Attribute": "SearchBy",
"Value": "Phone"
}
],
"Activity": {
"ActivityEvent": 201,
"Fields": [
{
"SchemaName": "Status",
"Value": "'.$row['status'].'"
}
]
}
//send payload to API
$curl_url = 'https://test.api.com';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_json))
);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
$curl_result = curl_exec($ch);
$curl_info = curl_getinfo($ch);
echo $curl_result;
//error checking
if (curl_error($ch)) {
$error_msg = curl_error($ch);
//echo $error_msg;
}
}';
【问题讨论】:
-
这个问题离题了。 显然,结果的数量与您获取它们的方式无关。并且是否定义数组也不相关。你的问题出在其他地方。而不是一些猜测,您必须就您遇到的实际问题提出一个问题:并非所有行都被返回。您必须详细解释“不是所有行都返回”时它的外观以及为什么您认为它不是所有行。