【问题标题】:Use a Variable instead of the term MYSQLI_ASSOC [closed]使用变量而不是术语 MYSQLI_ASSOC [关闭]
【发布时间】:2018-09-17 21:47:03
【问题描述】:

为了在mysqli_fetch_array 查询中保持数组类型动态,我想使用变量而不是术语MYSQLI_ASSOC。当我尝试以下代码时:

$array_type = "MYSQLI_ASSOC";
while($row = mysqli_fetch_array($query,$array_type)){
echo $row["name"];
}

我收到以下错误:

警告:mysqli_fetch_array() 期望参数 2 为整数,字符串在 /var/www/dca/query_results.php 第 28 行给出

如果可能的话,我想避免使用ifelse 语句。

【问题讨论】:

  • MYSQLI_ASSOC 是一个常数。
  • 投票以错误结束
  • 看我的回答可能对你有帮助。
  • 这是我第一次看到被拒绝的答案!
  • @ths 一个糟糕的答案和一个没有经验的提问者:)

标签: php mysqli


【解决方案1】:

MYSQLI_ASSOC 是一个数字,而不是一个字符串。试试

$array_type = MYSQLI_ASSOC;

【讨论】:

    【解决方案2】:

    事实上,MYSQLI_ASSOC 是一个预定义的PHP constant(它包含一个integer,它可以帮助mysqli_result 类知道应该使用的获取类型)。因此,您需要将其值分配给 $array_type 变量,而不像其名称为 string

    $array_type = MYSQLI_ASSOC; // no quotes nor apostrophes.
    while($row = mysqli_fetch_array($query, $array_type)) {
      echo $row["name"];
    }
    

    按照我的理解,为了让事情变得更加动态,您可以创建一个包含不同获取样式的数组,然后调用该数组并使用适当的索引指示所需的获取样式:

    $array_type = [MYSQLI_ASSOC, MYSQLI_NUM, MYSQLI_BOTH]; // array containing the fetching styles.
    /**
    * $array_type[0] => associative array.
    * $array_type[1] => default array(the indexes are numbers).
    * $array_type[2] => the both styles are used.
    **/
    while($row = mysqli_fetch_array($query, $array_type[0])) {
      echo $row["name"];
    }
    

    希望我把你推得更远。

    【讨论】:

      【解决方案3】:

      第二个参数是可选的整数常量,它需要一个整数值而不是字符串,see details here

      所以你必须使用以下任何一种

      $array_type = MYSQLI_ASSOC; // 1
      $array_type = MYSQLI_NUM; // 2
      $array_type = MYSQLI_BOTH; // 3
      

      $array_type = 1; //MYSQLI_ASSOC;
      $array_type = 2; //MYSQLI_NUM;
      $array_type = 3; //MYSQLI_BOTH;
      

      以上 3 个常量在 MySQLi 中定义如下

      define ('MYSQLI_ASSOC', 1);
      define ('MYSQLI_NUM', 2);
      define ('MYSQLI_BOTH', 3);
      

      【讨论】:

      • 不是第二个选项,以防开发人员决定更改与预定义常量关联的值
      • @RiggsFolly,我没有建议第三个选项,我刚刚描述了 PHP 已经定义的方式 :) 请阅读上面的文字。
      • 啊,我现在明白了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2012-07-06
      相关资源
      最近更新 更多