函数内的 php 数组只有 1 个结果

php array within function only 1 result

提问人:mrlayance 提问时间:9/30/2022 最后编辑:mrlayance 更新时间:9/30/2022 访问量:63

问:

我无法弄清楚如何让$output在此功能中工作。

    <?php
$conn = new mysqli($servername, $username, $password, $dbname);
function fill_unit_select_box($conn)
    { 
     $output = '';
     $query = "SELECT * from `skater` ORDER By `skater`.`skater_name_first` ASC";
     $result = $conn->query($query);
    
     while($row = mysqli_fetch_array($result))
     {
        $output .= '<option value="'.$row["skater_NUM"].'">'.$row["skater_NUM"].''.$row["skater_NUM"].'</option>';
      //$output .= '<option value="'.$row["skater_NUM"].'">'.$row["skater_name_first"].''.$row["skater_name_last"].'</option>';
 }
 return $output;
}

?>

稍后调用函数。

<option value="">Select Unit</option><?php echo fill_unit_select_box($conn); ?></select>

如果我使用以下内容,则没有任何效果。选项字段不会显示在选择中。

output .= '<option value="'.$row["skater_NUM"].'">'.$row["skater_name_last"].''.$row["skater_name_first"].'</option>';

如果我使用以下功能,则该功能有效。

output .= '<option value="'.$row["skater_NUM"].'">'.$row["skater_NUM"].''.$row["skater_NUM"].'</option>';

调用除 skater_NUM 之外的任何内容都会导致问题。

如果我在以下之外调用该函数,则该函数可以工作。

 $(document).on('click', '.add', function(){
  var html = '';
  html += '<tr>';
  html += '<td><input type="text" name="item_name[]" class="form-control item_name" /></td>';
  html += '<td><input type="text" name="item_quantity[]" class="form-control item_quantity" /></td>';
  html += '<td><select name="item_unit[]" class="form-control item_unit"><option value="">Select Unit</option><?php echo fill_unit_select_box($conn); ?></select></td>';
  html += '<td><button type="button" name="remove" class="btn btn-danger btn-sm remove"><span class="glyphicon glyphicon-minus"></span></button></td></tr>';
  $('#item_table').append(html);
 });

该功能正在工作。只是添加行 .add 按钮不会添加除skater_NUM字段的数字以外的任何内容的新行。

 $(document).on('click', '.add', function(){
  var html = '';
  html += '<tr>';
  html += '<td><input type="text" name="item_name[]" class="form-control item_name" /></td>';
  html += '<td><input type="text" name="item_quantity[]" class="form-control item_quantity" /></td>';
  html += '<td><select name="item_unit[]" class="form-control item_unit"><option value="">Select Unit</option><option value="8">Skater1</option><option value="21">Skater2</option></select></td>';
  html += '<td><button type="button" name="remove" class="btn btn-danger btn-sm remove"><span class="glyphicon glyphicon-minus"></span></button></td></tr>';
  $('#item_table').append(html);
 });
php ajax mysqli

评论

2赞 ADyson 9/30/2022
$output .=每次循环时都会将结果连接到现有字符串中,因此您会得到多个选项,不确定为什么要将其注释掉?
0赞 mrlayance 9/30/2022
我发现如果我调用除 $row[“skater_NUM”] 之外的任何内容,我都会收到错误。我可能不得不重新表述我的问题。
0赞 ADyson 9/30/2022
如果您遇到错误,显然您需要告诉我们它们是什么。编辑您的帖子以澄清真正的问题是什么。
0赞 user3783243 9/30/2022
里面有什么?“问题”是警告还是其他什么?请详细描述问题。skater
1赞 ADyson 9/30/2022
您能否定义一下“问题”的确切含义......当您使用其他字段时会出现什么问题?您是否收到错误消息或其他意外输出?(它可能隐藏在您的 HTML 源代码中,您可能需要在浏览器中使用“查看源代码”才能看到它 - 除非您启用了 PHP 错误日志记录。

答:

0赞 Gene_Nostrada 9/30/2022 #1

变量 $output 在每个循环中被替换,$output 将为您提供最后一行的结果。 解决方案:尝试将$output替换为$output .=

-2赞 mrlayance 9/30/2022 #2

我想通了......添加“..”现在回声喜欢数字以外的字符......这花了太长时间。

html += '<td><select name="item_unit[]" class="form-control item_unit"><option value="">Select Unit</option><?php echo fill_unit_select_box($conn); ?></select></td>';

html += '<td><select name="item_unit[]" class="form-control item_unit"><option value="">Select Unit</option>"<?php echo fill_unit_select_box($conn); ?>"</select></td>';

评论

0赞 Nico Haase 9/30/2022
凸轮你分享更多细节?第一个片段和第二个片段有什么区别?
0赞 mrlayance 9/30/2022
在php echo“<?php echo fill_unit_select_box($conn); ?>”
1赞 Nico Haase 9/30/2022
你这是什么意思?请通过编辑将所有说明添加到您的答案中
0赞 ADyson 9/30/2022
这两段代码之间似乎没有区别
1赞 Your Common Sense 9/30/2022
他在没有意义的地方添加了引号,围绕着几个选项标签