Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP准备的语句从while循环连接:“逗号”、“and”和“句点”_Php_Arrays_Prepared Statement_Concatenation - Fatal编程技术网

PHP准备的语句从while循环连接:“逗号”、“and”和“句点”

PHP准备的语句从while循环连接:“逗号”、“and”和“句点”,php,arrays,prepared-statement,concatenation,Php,Arrays,Prepared Statement,Concatenation,我试图从MySQL查询中构建一个句子。我相信我已经使用了连接部分,因为我在中替换了一个静态数组。有没有人可以指导我正确的方向,让我知道while循环生成所需的数组是什么样子的?如何从mysql语句创建关联数组 $query = "SELECT name, dob FROM children WHERE personal_id = ?"; $statement = $db->prepare($query); $statement->bind_param('i', $_SESSION['

我试图从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);

不需要对数据进行两次传递,您需要格式化出生日期,否则您只需要获得一个时间戳。然后,这段代码可以继续使用语法格式,我觉得这很好。

如何从mysql语句创建关联数组?所需输出的示例?谢谢。数据库正在返回姓名和出生日期。我需要把这个句子读出来“姓名”于“日期”出生,“姓名”于“日期”出生,“姓名”于“日期”出生。如果一个结果以句号结束,这个代码到处都是。。foreach中的$statement2和$dob数组从何而来?