簡體   English   中英

PHP准備語句連接:來自while循環的“逗號”,“和”和“句點”

[英]PHP prepared statement concatenate: “comma”, “and”, and “period” from while loop

我正在嘗試從MySQL查詢構建一個句子。 我相信我有連接部分工作,因為我已經替換了靜態數組。可能有人指導我正確的方向,我的while循環看起來像生成所需的數組? 如何從我的mysql語句創建關聯數組?

$query = "SELECT name, dob FROM children WHERE personal_id = ?";
$statement = $db->prepare($query);
$statement->bind_param('i', $_SESSION['mysqlID']);
$statement->bind_result($name, $dob);
$statement->execute();

// Store the results
$statement->store_result();

// Get the number of rows
$num_of_rows = $statement->num_rows;


**//I believe my problem lies in this array ?**
$m_children = [];
while ($statement->fetch()) {
  $m_children[] =  $name;
  $m_children[] .=  $dob;
}

$num_children = intval($num_of_rows);
$children = [];

foreach ($m_children as $k => $v) {
  $dob = strtotime($dob[$k]);
  $children[] = "$v, born on {$dob}";
}

$tmp = array_pop($children);

  if ($num_children > 1) {
    $children_type = 'children';
    $children = join(', ', $children) . ' and ' . $tmp;
  } else {
    $children_type = 'child';
    $children = $tmp;
  }

$children = "<p>I have the following ". $children_type .": ". $children .".</p>";

總體而言,您的代碼看起來沒問 語法部分肯定是固定的(彈出最后一個元素,用逗號連接其余部分......)

如您所料,您的問題代碼是您標記的部分。

//I believe my problem lies in this array ?
$m_children = [];
while ($statement2->fetch()) {
  $m_children[] =  $name;
  $m_children[] .=  $dob;
}

$num_children = intval($num_of_rows);
$children = [];

foreach ($m_children as $k => $v) {
  $dob = strtotime($dob[$k]);
  $children[] = "$v, born on {$dob}";
}

這是一個建議的改進:

$children = [];
while( $statement2->fetch()) {
    $children[] = $name." born on ".date("d/M/Y",strtotime($dob));
}
$num_children = count($children);

沒有必要對數據進行兩次傳遞,您需要格式化出生日期(否則您只需要一個時間戳)。 這段代碼可以繼續你的語法格式,這對我來說似乎沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM