【问题标题】:mysql query using array outputting in select element在选择元素中使用数组输出的mysql查询
【发布时间】:2012-04-18 12:37:04
【问题描述】:

我正在尝试为表单中的几个 html 选项元素编写一个通用函数。每个元素的选项列表都会有所不同,所以我想要做的是根据在我的 mysql 表中引用它们的“id”显示选项,这将是一个数组。该表有 2 列,第一个“id”只是一个数字,第二个“prod_option”是我想要显示的值。请问有人可以解释我的代码有什么问题吗?

这是我在 select 元素中调用函数的地方。我的连接没有问题。

//This should select 'prod_option' for id's 1,2 & 3 for example
<td><div class="formInput"><label>Cap or Vac:</label>
<select name="pack_req" id="pack_req[]" 
value="**<?php $newProd->packRequirements(1,2,3); ?>**" /></select></div></td>


//function in class
public function packRequirements($values){
$con = $this->connection;
$itms = array($values);

$sql = $con->query("SELECT `prod_option` 
FROM `packaging_requirements` 
WHERE `id`    IN('".implode("', '", $itms)."')"); 

while($r = $sql->fetch_array(MYSQLI_ASSOC)):
echo '<option value="'$itms['prod_option']'"</option>';  
endwhile;

}

【问题讨论】:

    标签: php mysql arrays option


    【解决方案1】:

    您可能希望将您的功能放在选择标签之间,例如:

    <select><?php $newProd->packRequirements(1,2,3); ?></select>
    

    代替:

    <select value="**<?php $newProd->packRequirements(1,2,3); ?>**"></select>
    

    【讨论】:

      【解决方案2】:

      您的 HTML 似乎有误。选择是这样的:

      <select name="myname">
          <option value="42">Everything</option>
      </select>
      

      但是,您的代码会生成

      <select name="pack_req" id="pack_req[]" value="**<option value=".
      

      【讨论】:

      • 感谢您的快速回复。我已经对选择选项进行了您推荐的更改。但是,它仍然没有回显任何值。我不确定是否应该回显 $itms['prod_option']。也许我应该回应结果,但不确定如何。
      • 比较应该有什么和有什么。您的 ";
      【解决方案3】:
      <td><div class="formInput"><label>Cap or Vac:</label>
      <select name="pack_req" id="pack_req[]">
      **<?php $newProd->packRequirements(1,2,3); ?>**</select></div></td>
      
      
      //function in class
      public function packRequirements($values){
      $con = $this->connection;
      $itms = array($values);
      
      $sql = $con->query("SELECT `prod_option` 
      FROM `packaging_requirements` 
      WHERE `id`    IN('".implode("', '", $itms)."')"); 
      
      while($r = $sql->fetch_array(MYSQLI_ASSOC)):
      echo '<option value=".$itms['prod_option'].">'.$itms['prod_option'].'</option>';  
      endwhile;
      
      }
      

      【讨论】:

      • 好的,我已经对错误信息进行了排序。我遇到的问题是它只返回数组中的第一个值,例如如果我使用 $newProd->packRequirements(array(1,2,3));那么它只会返回 id 为 1 的 prod_option。不显示其他选项....为什么?啊啊啊!
      • 好的,我整理好了。也许这会帮助别人。这是我修改后的代码: $items = implode(",", $itms); $sql = $con->query("SELECT prod_option FROM packaging_requirements WHERE id IN({$items})");
      【解决方案4】:

      你必须这样写:

      <select name='selectName'><?php newProd->packRequirements(array(1,2,3)) ?></select>
      
      
      
      public function packRequirements($itms = array()) {
         $con = $this->connection;
      
         $sql = $con->query("SELECT `prod_option` FROM `packaging_requirements` WHERE `id` IN('" . implode(",", $itms) . "')"); 
      
        while($r = $sql->fetch_array(MYSQLI_ASSOC)) {
           echo '<option value="' . $r['prod_option'] . '">' . $r['prod_option'] . '</option>';
        }
      }
      

      【讨论】:

      • 它现在检索第一个 'prod_option',它是 VAC,但也显示此错误:警告:implode() [function.implode]:在 C:\wamp\www\includes\newLineForm 中传递的参数无效第 16 行的 .class.php 第 16 行是 $sql 语句
      【解决方案5】:

      试试这个:

      public function packRequirements($values = array())
      {
         $result ='';
         $string =  implode(',', $values);
      
         $sql = $con->query("SELECT `prod_option` 
                            FROM `packaging_requirements` 
                            WHERE `id`    IN('".$string."')");
         while($r = $sql->fetch_array(MYSQLI_ASSOC)){
              $result .= '<option value=".$r['prod_option'].">'.$r['prod_option'].'</option>';  
         }
       return $result;
      
      }
      
      <select name="pack_req" id="pack_req[]">
      **<?php echo $newProd->packRequirements(arra(1,2,3)); ?>**
      </select>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 2020-02-28
        • 2016-04-24
        • 2013-09-14
        • 1970-01-01
        • 2014-04-18
        相关资源
        最近更新 更多